无法从安卓谷歌登录中从谷歌获取令牌ID



我已经将我的android应用程序作为谷歌控制台上的api进行了签名,并将我的后端服务器作为谷歌控制台中的oauth客户端进行了签名
我还更新了我的gradle文件,因此需要什么才能获得令牌Id。
但不知怎么的,我总是无法从谷歌获得代币
我已经从谷歌控制台检查了我的包名和ssh1代码,并通过命令keytool -list -v -keystore mydebudpathdebug.keystore 将其与我的调试ssh1进行了匹配

我要在这里提交我的android代码:

 @Override
      public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    validateServerClientID();
    // [START configure_signin]
    // Request only the user's ID token, which can be used to identify the
    // user securely to your backend. This will contain the user's basic
    // profile (name, profile picture URL, etc) so you should not need to
    // make an additional call to personalize your application.
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(getString(R.string.server_client_id))
            .requestServerAuthCode(getString(R.string.server_client_id), false)
            .requestEmail()
            .build();
    // [END configure_signin]
    // Build GoogleAPIClient with the Google Sign-In API and the above options.
    mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
            .enableAutoManage(getActivity()/* FragmentActivity */, this /* OnConnectionFailedListener */)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build();
}

和我的onActivityResult:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == RC_GET_TOKEN) {
        // [START get_id_token]
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        Log.d(TAG, "onActivityResult:GET_TOKEN:success:" + result.getStatus().isSuccess());
        if (result.isSuccess()) {
            GoogleSignInAccount acct = result.getSignInAccount();
            String idToken = acct.getIdToken();
            // Show signed-in UI.
            Log.d(TAG, "idToken:" + idToken);
            updateUI(true);
            // TODO(user): send token to server and validate server-side
        } else {
            // Show signed-out UI.
            updateUI(false);
        }
        // [END get_id_token]
    }
}

代码CCD_ 2总是返回CCD_ 3
还请注意,在上面的代码中,我的R.string.server_client_id是我的服务器的client_id,我在谷歌开发者控制台中创建了它作为web应用程序oauth2。
我从未在android身份验证代码中使用过我的android api_key。我应该在哪里使用它
我做错了哪一部分?

这是我的清单,它可能对你有用

  1. 确保使用正确的sha1生成正确的配置Google生成配置
  2. 确保应用程序文件夹中的google-services.json是正确的
  3. 转到"凭据"页面,确保您选择了正确的项目,它应该与您用于生成配置文件的项目相同
  4. 在凭据部分,确保您的OAuth 2.0客户端ID类型为Web应用程序而非Android
  5. 检查字符串.xml中的api密钥是否与谷歌开发者控制台中的密钥匹配

如果其他一切都失败了,我建议你尝试在谷歌开发者控制台中基于新项目创建一个新的api密钥,祝你好运!

有用信息:developers.google.com/identity/sign-in/android/start-integrating

相关内容

  • 没有找到相关文章

最新更新