带有 Google Drive API 的 Android 应用程序在选择帐户后卡住。为什么?

问题描述 投票:0回答:3

我试图了解如何将 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))”,则身份验证请求会成功。 这是我的 Google 控制台配置: 客户ID (抱歉,也许它会显示为链接,但 stackOverflow 告诉我不能放置 img) 和 “.../auth/drive.file”是我在向用户显示的 Google 同意窗口中请求的授权。 我不知道这是否重要,但我使用真实的手机而不是 Android Studio 模拟器来测试我的应用程序。

android android-studio google-drive-api
3个回答
6
投票

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


2
投票

查看 https://issuetracker.google.com/issues/178183308 向 Google 报告问题的位置。


0
投票

对于在 Node 环境中工作并尝试以离线模式获取授权令牌的人,我建议检查您的本地服务器是否卡住。确认同意后,授权过程将重定向到您的回调 API。如果您的本地服务器没有响应,它将无法访问回调 API,这就是我遇到的问题。

© www.soinside.com 2019 - 2024. All rights reserved.