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/

相关文章:

Android 应用内结算,多次购买同一商品

Android windowBackground随设备转动

android - 创建具有结构化布局的 ListView 单元格

android - 获取 Android 应用程序中的文件夹,该文件夹不是通过此应用程序创建的

c - 如何将 RFC 3339 日期时间转换为 IST?

android - android应用程序中的 Assets 文件夹(eclipse)

oauth - Google OAuth2应用程序。从用户身份验证的应用程序中删除自己

python - Google Drive API 权限不足 : Request had insufficient authentication scopes

c# - 用于已安装应用程序 c# 的 Google Drive Api

java - 适用于 Android 的 Google 云端硬盘 SDK : How to get folder id if I know folder title