Google Google Drive API 的 OAuth 2.0 和调试密钥

Google OAuth 2.0 and debug key for Google Drive 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,我已经从 Windows->Preferences->Android->Build 获得用于调试模式的调试密钥库的 sha1 指纹,但是 Google 驱动器 [=26= 】 授权失败!为什么? 我发现的(唯一)解决方案是在调试模式下使用 "Release" 客户端 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 Drive.
  4. 授权应用程序版本的原因

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

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