Java Google Drive Android API OAuth身份验证问题-onActivityResult返回“;0“;
我只是想验证Android驱动器API 我从Android Studio生成了签名的APK。帐户获得身份验证,Google Drive API身份验证与生成的APK完美配合 现在,当我上传这个相同的APK到游戏控制台的内部测试时。然后身份验证失败 __下面是我是如何做到这一切的__ 1) 在Android清单中添加了以下内容Java Google Drive Android API OAuth身份验证问题-onActivityResult返回“;0“;,java,android,authentication,oauth-2.0,google-drive-android-api,Java,Android,Authentication,Oauth 2.0,Google Drive Android Api,我只是想验证Android驱动器API 我从Android Studio生成了签名的APK。帐户获得身份验证,Google Drive API身份验证与生成的APK完美配合 现在,当我上传这个相同的APK到游戏控制台的内部测试时。然后身份验证失败 __下面是我是如何做到这一切的__ 1) 在Android清单中添加了以下内容 <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 3) 我生成了调试密钥S
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
3) 我生成了调试密钥SHA1,并向API控制台注册了凭据,然后测试了应用程序它在这里工作。(onActivityResult返回结果\u OK)
4) 现在,我生成了生产密钥SHA1,并向API控制台注册了凭据,从Android Studio生成了最终签名的APK,并在我的物理设备上进行了测试它仍在工作。(onActivityResult返回结果\u OK)
5) 现在我在Play Console中发布了这个最终的生产APK到内部测试
6) 现在,当我下载此应用程序并运行此身份验证时它失败,现在不工作。(onActivityResult返回“0”)
是否有我遗漏的内容。有一种方法可以使用谷歌驱动API
在Android上授权请求不同于其他授权
由于与Google Play services的集成而产生的工作流
与其他工作流不同,Android上的授权使用SHA1
指纹和软件包名称,以识别您的应用程序,而不是客户端ID
和客户端机密
您必须按照正确的授权流程在游戏控制台中测试APK
以下是一个指南。我在问题中所述的所有步骤都是正确的。我错过了一件事,那就是我正在使用“谷歌游戏应用程序签名” 使用“Google Play应用程序签名”时,我们需要在API控制台中使用应用程序签名证书的SHA-1内部凭据来创建凭据-OAuth客户端ID 现在,从哪里获得此SHA-1的应用程序签名证书
就这样。现在,当您运行应用程序并进行API调用时,它将工作请查看我更新的问题,并提供我是否遗漏了任何东西您使用的android版本?28作为目标编译版本并使用androidX支持库版本我真的没有得到它,为什么投反对票。差不多一个星期后,我终于找到了与我的问题相关的问题。因此,将解决方案作为答案发布。这样,任何有同样问题的人都不会把头撞到墙上。如果答案不正确或者我需要改进,请告诉我。在应用程序签名中,我发现sha1与我的本地密钥库sha1相同。
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);
}
}