Google 驱动器 Android API OAuth 身份验证问题 - onActivityResult returns“0”

Google Drive Android API OAuth Authentication Problem - onActivityResult returns "0"

我只是想验证 Android 驱动器 API。

我从 Android Studio 生成了签名 APK。帐户通过身份验证并且 Google Drive API 身份验证与此生成的 APK 完美配合。

现在,当我将这个相同的 APK 上传到 Play 管理中心的内部测试时。然后认证失败。

__ 现在这是我完成所有操作的方式 this__

1) 在 Android 清单

中添加了以下内容
<uses-permission android:name="android.permission.GET_ACCOUNTS" />

2) 像这样实现身份验证

public abstract class AuthActivityWhosebug 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 returns RESULT_OK)

4) 现在我生成了生产密钥 SHA1 并使用 API 控制台注册了凭据,并从 Android Studio 生成了最终签名的 APK 并在我的物理设备上进行了测试。 它还在工作。 (onActivityResult returns RESULT_OK)

5) 现在我发布了这个最终生产 APK 以在 Play 管理中心进行内部测试。

6) 现在,当我下载此应用程序并 运行 此身份验证时。 失败,现在无法正常工作。 (onActivityResult returns "0")

有什么我遗漏的吗?

有一种方法可以 authorize your android apps 使用 Google 驱动器 API

Authorizing requests on Android differs from other authorization workflows because of the integration with Google Play services.

Unlike other workflows, authorization on Android uses a SHA1 fingerprint and package name to identify your app instead of a client ID and client secret.

您必须遵循正确的授权流程才能在 Play 控制台中测试您的 APK。

这是 generate the signing certificate fingerprint and register your application 的指南。

我按照问题所述执行的所有步骤都是正确的。我只是错过了一件事,那就是我正在使用 "App Signing by Google Play".

使用 "App Signing by Google Play" 时,我们需要使用 App 签名证书SHA-1 创建凭据 - OAuth 客户端 ID ] API 控制台中的内部凭据。

现在从哪里获得应用签名证书的 SHA-1?

  1. Select Play 管理中心的应用程序
  2. 转到发布管理
  3. Select 应用签名
  4. 现在从 "App signing certificate" 部分复制 SHA-1 证书指纹
  5. 使用复制的 SHA-1 指纹 Google API 控制台(Google 云平台)创建新凭证

就是这样。现在,当您 运行 应用程序进行 API 调用时,它将 工作 .