我在 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 是什么,所以我不能告诉你在哪里可以找到它,但它应该很容易。
- 在 7-zip 或类似的解压缩程序中打开“*.apk”文件,并在存档中找到“META-INF\CERT.RSA”文件。将其解压缩到您的 ...\desktop\
- 运行“keytool -printcert -file ...\desktop\CERT.RSA”。
- 您应该会看到相关 APK 文件的 SHA1,并将其与您在控制台中注册的 SHA1 进行比较。还要仔细检查包名称。 PackageName-SHA1 组合是使用 Google 云端硬盘授权应用版本的原因。
我依稀记得在重新安装/升级我的 IDE 或将项目移动到另一台机器(基本上生成与我注册的不同的调试 SHA1)后我发生了这种情况。
我知道这是不可能的,但这是我遇到麻烦时使用的方法。
关于android - Google Drive API 的 Google OAuth 2.0 和调试 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28532206/