无法从 google 在 android google 登录中获取令牌 ID

Can't get token id from google in android google log in

我已经在 google 控制台上将我的 android 应用程序签名为 api,并在 google 控制台中将我的后端服务器签名为 oauth 客户端。
我还更新了我的 gradle 文件以及获得令牌 ID 所需的一切。
但不知何故,我总是无法从 google.
获得令牌 我已经从 google 控制台检查了我的包名和 ssh1 代码,并通过命令将其与我的调试 ssh1 匹配:keytool -list -v -keystore mydebudpath\debug.keystore

我要在这里提交我的 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]
    }
}

代码result.getStatus().isSuccess();总是returnsfalse
另请注意,在上面的代码中,我的 R.string.server_client_id 是我在 google 开发人员控制台中创建的服务器的 client_id 作为 Web 应用程序 oauth2.
我从未在我的 android 验证码中使用过我的 android api_key。我应该在哪里使用它?
我哪里做错了?

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

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

如果一切都失败了,我建议您尝试根据 Google 开发者控制台中的新项目创建一个新的 api 密钥,祝您好运!

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