Android:Google Drive onActivityResult() 获取结果代码 0 (RESULT_CANCELED)

标签 android google-drive-api google-authentication

我一直在搜索 Google 文档和示例代码以及 Stack Overflow 以寻找解决方案,虽然我看到很多人遇到相同的症状,但我没有找到任何对我的具体情况有帮助的东西.

基本上我正在尝试为 Google Drive REST API 执行身份验证工作流,当我到达 Google 帐户选择页面时,当它返回我的调用 Activity 时,我总是看到 RESULT_CANCELED 结果(即 0)而不是 RESULT_OK(即 -1),无论选择什么帐户。

我已检查以确保在 Google 开发者控制台上正确设置了凭据 - 并且他们之前通过现已不存在的 CloudRail 库进行身份验证。 (据我所知,现在使用 Google 登录,您提供任何客户端 ID 等:当它与您的包名称匹配时,所有这些都由 Google 处理。)

这是我的身份验证请求:

    GoogleSignInOptions signInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestScopes(new Scope(DriveScopes.DRIVE))
            .build();
    mSignInClient = GoogleSignIn.getClient(activity, signInOptions);

这是 Activity 的 onActivityResult():

@Override
public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
    switch (requestCode) {
        case REQUEST_GOOGLE_SIGN_IN:
            if (resultCode == Activity.RESULT_OK && resultData != null) {
                /*** NEVER GET HERE ***/
                handleSignInResult(this, resultData);
            }
            else {
                /*** ALWAYS GET HERE ***/
                Log.e(TAG, String.format("Unable to complete Google sign-in (resultCode: %d)", resultCode));
            }
        }
        break;
    }
    super.onActivityResult(requestCode, resultCode, resultData);
}

我假设这是我做了一些明显愚蠢和错误的事情的案例——我希望只是输入问题就能帮助我弄清楚它是什么,但这还没有发生。

最佳答案

如我所料,我做错的事情相对简单。因此,对于遇到同样问题并在寻找解决方案时跨过我 body 的任何人,以下是我的发现:

虽然我确实在 Google 开发者控制台中正确设置了凭据,并按照文档的指示从 mykeystore.keystore 生成了我的包名称和 SHA1,但我错过的是 Android Studio 默认情况下不使用 mykeystore.keystore 签署调试版本。相反,它使用自己提供的 debug.keystore。

因此要做的事情是使用您的包名称和 Android Studio 的 debug.keystore 中的 SHA1 而不是自己的创建一个新的 OAuth 客户端 ID。 (您可以在您的系统上搜索 debug.keystore,或者运行 Gradle“signingReport”任务并从那里获取它。)

希望对某人有所帮助。

关于Android:Google Drive onActivityResult() 获取结果代码 0 (RESULT_CANCELED),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56350913/

相关文章:

android.view.View.systemUiVisibility 已弃用。什么是替代品?

java - 首选项不起作用

android - com.google.android.gcm.GCMBaseIntentService 在哪里?

python - 从与我共享的文件夹中的 Google Drive 下载 zip 文件夹/文件

azure - 如何将 Google OAuth 2 token 传递给 Azure API 身份验证?

android - 如何正确保存到图片文件夹

c# - 为什么我得到 System.UnauthorizedAccessException Access to the path 'Google.Apis.Auth' is denied

google-apps-script - 在 google-apps-script 中,有没有办法知道谷歌驱动器的文件夹是否为空?

c# - OWIN Google 身份验证 - 如何获取 id_token?

android - 获取谷歌一次性授权码