android - Google Drive API 的 Google OAuth 2.0 和调试 key

标签 android google-oauth google-drive-android-api

我在 GoogleDriveAPI 控制台中为 Android 应用程序设置了 2 个客户端 ID:第一个用于发布 APK,第二个用于调试目的。已发布的应用程序一切正常,但我的问题仅与第二个客户端 ID 有关。 我收到此异常:com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAuthIOException

在以下几行之后:

Drive.Files.List request;
request = service.files().list();
String query = "mimeType='application/vnd.google-apps.folder' AND trashed=false AND title='" + title + "' AND '" + parentId + "' in parents";
request = request.setQ(query);
com.google.api.services.drive.model.FileList files = request.execute(); // <=I'm getting the exception here

我在 Windows 上使用 ADT,我已经从 Debug模式的 Windows->Preferences->Android->Build 获得了用于调试 keystore 的 sha1 指纹,但是 Google Drive API 授权失败!为什么? 我发现的(唯一)解决方案是在 Debug模式下使用“发布”客户端 ID,并使用自定义指纹(这确实有效)。

最佳答案

试试这个: 以不工作的 *.apk 文件 (DEBUG.apk) 为例,我不知道你的 IDE 是什么,所以我不能告诉你在哪里可以找到它,但它应该很容易。

  1. 在 7-zip 或类似的解压缩程序中打开“*.apk”文件,并在存档中找到“META-INF\CERT.RSA”文件。将其解压缩到您的 ...\desktop\
  2. 运行“keytool -printcert -file ...\desktop\CERT.RSA”。
  3. 您应该会看到相关 APK 文件的 SHA1,并将其与您在控制台中注册的 SHA1 进行比较。还要仔细检查包名称。 PackageName-SHA1 组合是使用 Google 云端硬盘授权应用版本的原因。

我依稀记得在重新安装/升级我的 IDE 或将项目移动到另一台机器(基本上生成与我注册的不同的调试 SHA1)后我发生了这种情况。

我知道这是不可能的,但这是我遇到麻烦时使用的方法。

关于android - Google Drive API 的 Google OAuth 2.0 和调试 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28532206/

相关文章:

java - Eclipse导入已有的android项目

java - 打开键盘时 EditText 不可见

oauth - Google+ 服务器端 token 验证

android - Gradle 找不到库

android - 奇怪的数据库错误: Empty values?

android - 如何使用 ClientID 和 ClientSecret 在 Phonegap 中使用 Angularjs 登录 Google OAuth2

java - jsp 调用的 jar 方法读取的文件的位置

android - 即使在删除应用程序后,Google Drive Android API 也会返回成功

android - 授权 Google Drive Android API

android - 如何清除 GoogleApiClient 默认帐户和凭据