gpt4 book ai didi

android - Google Drive SDK 2.0 抛出错误 400 Bad Request

转载 作者:行者123 更新时间:2023-11-30 03:58:52 24 4
gpt4 key购买 nike

我已经与适用于 Android 的 Google Drive API 抗争了 50 多个小时,但一点进展都没有。据我了解,有 1001 种方法可以访问 Google Drive(Google Docs API、REST 和 Google Drive SDK v2)。我正在使用 Google Drive SDK v2。我想访问 Google 云端硬盘以上传 jpeg 文件。平台,Android 2.2+。

我尝试过的:

  • 使用最近发布的 SDK: http://code.google.com/p/google-api-java-client/wiki/APIs#Drive_API

  • 我观看了 Google I/O session ,但遗漏了最重要的部分(如何使用您的客户端 ID 和客户端密码创建 Drive 对象): https://developers.google.com/events/io/sessions/gooio2012/705/

  • 我在 https://code.google.com/apis/console 上创建了多个 key 。我创建(并测试过)的最后一个是使用“创建另一个客户端 ID...”->“已安装的应用程序”->“Android”创建的。我使用了 ~/.android/debug.keystore 中的 key 。

  • 我还尝试为“其他”(而不是 Android/iOS)安装的应用程序创建一个 key ,但这给了我一个客户端 ID 和客户端密码。 Drive 对象似乎不接受客户端密码。

  • 在代码显示“1234567890-abcdefghij123klmnop.apps.googleusercontent.com”的地方,我尝试同时使用“API key ”和“客户端 ID”,但都出现了相同的错误。

我的代码:

Account account = AccountManager.get(context).getAccountsByType(
"com.google")[0];

String token;
try {
token = GoogleAuthUtil.getToken(context, account.name, "oauth2:"
+ DriveScopes.DRIVE_FILE);
} catch (UserRecoverableAuthException e) {
context.startActivityForResult(e.getIntent(), ASK_PERMISSION);
return;
} catch (IOException e) {
return;
} catch (GoogleAuthException e) {
return;
}

HttpTransport httpTransport = new NetHttpTransport();
JacksonFactory jsonFactory = new JacksonFactory();
Drive.Builder b = new Drive.Builder(httpTransport, jsonFactory, null);
final String tokenCopy = token;
b.setJsonHttpRequestInitializer(new JsonHttpRequestInitializer() {
public void initialize(JsonHttpRequest request) throws IOException {
DriveRequest driveRequest = (DriveRequest) request;
driveRequest.setPrettyPrint(true);
driveRequest
.setKey("1234567890-abcdefghij123klmnop.apps.googleusercontent.com");
driveRequest.setOauthToken(tokenCopy);
}
});

final Drive drive = b.build();
FileList files;
try {
files = drive.files().list().setQ("mimeType=text/plain").execute();
} catch (IOException e) {
e.printStackTrace(); // throws HTTP 400
}

我得到的错误是:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
{
"code" : 400,
"errors" : [ {
"domain" : "global",
"location" : "q",
"locationType" : "parameter",
"message" : "Invalid Value",
"reason" : "invalid"
} ],
"message" : "Invalid Value"
}

最佳答案

如错误消息所示,您的错误出在查询参数q 中。 q 参数的正确语法是

files = drive.files().list().setQ("mimeType='text/plain'").execute();

而不是:

files = drive.files().list().setQ("mimeType=text/plain").execute();

查看您的代码,您已完全通过身份验证,但由于此语法错误,您的请求失败了。

关于android - Google Drive SDK 2.0 抛出错误 400 Bad Request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12888795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com