我正在制作一个Flutter移动的应用程序,并试图将用相机拍摄的图像保存到特定的Google Drive帐户中进行存储。我已经从我的Google帐户中获取了一个服务帐户JSON文件来进行身份验证。
这是我使用的代码:
import 'dart:io' as io;
import 'package:googleapis/drive/v3.dart' as ga;
import 'package:googleapis_auth/auth.dart';
import 'package:googleapis_auth/auth_io.dart';
uploadFileToGoogleDrive(io.File fileToUpload) async {
// send authorization to access Google Drive
// from https://pub.dev/packages/googleapis_auth
ServiceAccountCredentials accountCredentials = new ServiceAccountCredentials.fromJson({
//my service account JSON information goes here
});
List<String> scopes = [ga.DriveApi.DriveFileScope, ga.DriveApi.DriveScope];
try {
// authenticates with Google Drive with our service account credentials
AuthClient client = await clientViaServiceAccount(
accountCredentials, scopes);
ga.DriveApi drive = ga.DriveApi(client);
ga.File file = ga.File(); // create new file record to upload to Drive
try {
file.name = 'image.jpg';
ga.File response = await drive.files.create(file, uploadMedia: ga.Media(
fileToUpload.openRead(), fileToUpload.lengthSync()));
print('uploaded with a file size of: ${response.size}');
} on Exception catch (e) {
print('upload error: $e');
}
client.close();
} on Exception catch (e) {
print('credentials error: $e');
}
}
我上传的文件大小为24095。不返回错误消息。返回的“响应”有一个Google驱动器文件ID,但大小为null,从Web登录时,我无法在Google驱动器中上传文件。使用Google云端硬盘API上传此文件的正确方法是什么?
3条答案
按热度按时间r6vfmomb1#
这很容易,但你必须通过一系列的步骤来完成它。
1.启用Google Drive API
点击Google Console的链接:https://console.developers.google.com/apis/library?project=diary-app-339509
create project and enable API
Create OAuth client id
form to fill to make OAuth client id
2.对外开放项目。
for testing add test user email address
*3.将以下包添加到 pubspec.yaml
4.从google获取身份验证,并存储Auth详细信息以备将来验证
使用以下类存储身份验证详细信息
5.最后使用这个类将文件保存到驱动器
bvn4nwqk2#
结果发现,除了启用API和创建服务帐户之外,我还需要从JSON共享我想要上传到服务帐户电子邮件地址的文件夹。
cpjpxq1n3#
我最近得到了这个错误,我努力尝试,终于解决了它。错误是由于SHA-1密钥不匹配。请转到您的Android目录并在其中使用./gradlew signingReport =>命令。