java - Google Drive Android API OAuth 身份验证问题 - onActivityResult 返回“0”
问题描述
我只是想对 Android Drive API 进行身份验证。
我从 Android Studio 生成了签名的 APK。该帐户已通过身份验证,并且 Google Drive API 身份验证与此生成的 APK 完美配合。
现在,当我将相同的 APK上传到 Play Console 中的内部测试时。然后认证失败。
__现在这就是我做这一切的方法__
1) 在 Android Manifest 中添加以下内容
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
2)像这样实现身份验证
public abstract class AuthActivityStackOverflow extends BaseActivity {
protected static final int GOOGLE_SIGN_IN_REQUEST_CODE = 1;
public void signIn() {
startActivityForResult( getGoogleSignInClient().getSignInIntent(), GOOGLE_SIGN_IN_REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == GOOGLE_SIGN_IN_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
onSignInSuccess(GoogleSignIn.getLastSignedInAccount(this), requestCode);
showMessage("Account Linked Successfully");
} else { onSignInFailed(); }
}
}
protected GoogleSignInClient getGoogleSignInClient(){
GoogleSignInOptions signInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestScopes(Drive.SCOPE_APPFOLDER)
.requestEmail()
.build();
return GoogleSignIn.getClient(this, signInOptions);
}
}
3) 我生成了调试密钥 SHA1 并使用 API 控制台注册了凭据,然后测试了应用程序。它在这里工作。(onActivityResult 返回 RESULT_OK)
4) 现在我生成了生产密钥 SHA1 并使用 API 控制台注册了凭据,并从 Android Studio 生成了最终签名的 APK 并在我的物理设备上进行了测试。它仍在工作。(onActivityResult 返回 RESULT_OK)
5) 现在我将这个最终的生产 APK 发布到 Play Console 中的内部测试。
6)现在,当我下载此应用程序并运行此身份验证时。它失败了,现在它不起作用。(onActivityResult 返回"0")
有什么我想念的吗。
解决方案
有一种方法可以使用Google Drive API授权您的 android 应用程序。
由于与 Google Play 服务的集成,Android 上的授权请求不同于其他授权工作流程。
与其他工作流程不同,Android 上的授权使用
SHA1
指纹和包名称来识别您的应用,而不是使用client ID
和client secret
.
您必须遵循正确的授权流程才能在 Play 控制台中测试您的 APK。
这是生成签名证书指纹和注册应用程序的指南。
推荐阅读
- reactjs - 在 ReactJS 中路由后从子组件获取值
- oracle - PL/SQL 异常未捕获异常
- android - 在两个顺序 addToBackStack 之后,supportFragmentManager.fragments 大小为 1
- unity3d - 如何统一导出带有mtl文件的obj文件?
- java - 方法参考中的错误返回类型:无法将 reactor.core.publisher.Mono 转换
为 reactor.core.publisher.Mono - node.js - VSCode 收集扩展错误 -4094 - 这是什么意思?
- r - summary_at 用于 R 中具有不同参数的多个变量和多个函数?
- amazon-web-services - 将 EBS 快照从一个区域复制到另一个区域
- java - Android 如何使用共享首选项检查用户登录或注销
- haskell - 无法将类型与 Maybe b0 匹配