【问题标题】:Android App with Google Drive API stucks after choosing an account. Why?选择帐户后,带有 Google Drive API 的 Android 应用程序卡住了。为什么?
【发布时间】:2021-01-22 22:33:55
【问题描述】:

我正在尝试了解如何将 Google Drive API 集成到我的 Android 应用程序中(使用 Android Studio)。我已经尝试了在此处找到的示例应用程序(https://github.com/googleworkspace/android-samples/tree/master/drive/deprecation),但是在 Google API 控制台配置之后,当我选择一个帐户时,我的应用程序陷入了无限循环。为什么?问题出在哪里? 我也试过这个(https://youtu.be/5bSEIQYJzKs)教程,但我有同样的问题。 这是我的 build.gradle 特定行:

implementation "androidx.multidex:multidex:2.0.1"
implementation 'com.google.android.gms:play-services-auth:19.0.0'
implementation ('com.google.apis:google-api-services-drive:v3-rev136-1.25.0')
            {
                exclude group: 'org.apache.httpcomponents'
            }
implementation ('com.google.api-client:google-api-client-android:1.26.0')
            {
                exclude group: 'org.apache.httpcomponents'
            }
implementation 'com.google.http-client:google-http-client-gson:1.26.0'

这是我使用的版本

compileSdkVersion 30
buildToolsVersion "30.0.3"

问题出在此代码行中,并且仅在我使用“.requestScopes(new Scope(DriveScopes.DRIVE_FILE))”时才会出现: 如果我不使用 .requestScopes(new Scope(DriveScopes.DRIVE_FILE))",那么代码可以正常工作。并且用户确实可以登录

GoogleSignInOptions signInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestScopes(new Scope(DriveScopes.DRIVE_FILE))
                .requestEmail()
                .build();
GoogleSignInClient client= GoogleSignIn.getClient(this,signInOptions);
Intent i= client.getSignInIntent();
startActivityForResult(i,400);

(似乎活动从不返回任何值)。 如果没有“.requestScopes(new Scope(DriveScopes.DRIVE_FILE))”,则身份验证请求成功。 这是我的谷歌控制台配置: The client ID (对不起,也许它会显示为一个链接,但 stackOverflow 告诉我我不能放 img) 和 “.../auth/drive.file”是我在向用户显示的谷歌同意窗口中请求的授权。 我不知道这是否重要,但我使用真机而不是 Android Studio 模拟器来测试我的应用程序。

【问题讨论】:

    标签: android android-studio google-drive-api


    【解决方案1】:

    我刚刚解决了。对于所有遇到此问题的人:从 Google API 控制台中,将同意屏幕从测试状态中移除并发布。

    【讨论】:

    • 为了向其他阅读者澄清,将 OAuth 同意发布模式从“测试”更改为“生产”(如果对话框询问您有关验证,请单击“确认”),这似乎有效目前。很明显,当 OAuth 设置为“测试”模式时,Google 端仍有一些问题。
    • 看来谷歌已经解决了这个问题,现在旧的解决方案似乎是问题所在。将应用程序重新投入测试现在解决了我在几个月前转至生产环境以解决问题的两个应用程序中返回的挂起问题。
    • 在我们几个月前构建的应用程序上看到相同的行为,该应用程序使用具有只读范围的 Gmail API。直到几周前,一切都运行良好。当按预期在“测试”模式下登录对测试人员有效,但当切换到“生产”时,仅适用于用于创建项目的开发帐户。对于其他帐户,在选择帐户后它永远不会进入同意屏幕并显示无限期加载。
    【解决方案2】:

    查看https://issuetracker.google.com/issues/178183308 向 Google 报告了该问题。

    【讨论】:

    • 非常感谢。这很有帮助。我一直在寻找它,但我根本没有找到它。我刚刚将您的答案投票为有用,但由于我的声誉,所以不要显示它(我是这个平台的新手)。我希望你能看到我的投票。声望提升后,我会尽快检查。
    • 很高兴看到有人为此提交了问题,我花了几天时间才意识到这可能不是我的错。
    猜你喜欢
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多