0

我需要启用对 Google Drive 的服务器端访问。在这种情况下,一个人正在使用他的 Android 设备。据我了解,步骤如下: 1. 创建 GoogleSignInOptions 2. 使用 GoogleSignInOptions 创建 GoogleSignInAccount 3. 从 GoogleSignInAccount 获取 authCode 4. 将 authCode 交换为访问/刷新/ID 令牌

我被困在第 3 步。我遵循了描述良好的教程但没有成功 - https://developers.google.com/identity/sign-in/android/offline-accesshttps://developers.google.com/身份/登录/android/登录#configure_google_sign-in_and_the_googleapiclient_object

这是初始化登录过程的代码:

final GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestScopes(new Scope(Scopes.DRIVE_APPFOLDER))
                .requestServerAuthCode(backend_server_web_client_id)
                .build();

GoogleSignInClient google_api_client = GoogleSignIn.getClient(context, gso);

activity.startActivityForResult(google_api_client.getSignInIntent(), RC_SIGN_IN);

下面是处理登录结果的代码:

// data is the intent from onActivityResult callback
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);

if (task.isComplete())
    handle(task);
else {
    task.addOnCompleteListener(new OnCompleteListener<GoogleSignInAccount>() {
            @Override
            public void onComplete(@NonNull Task<GoogleSignInAccount> task) {
                handle(task);
            }}
    });
}

最后是句柄函数,问题出在哪里:

public void handle(Task<GoogleSignInAccount> task) {
    try {
        GoogleSignInAccount account = task.getResult(ApiException.class);
    } catch (ApiException e) {
    //I'm always getting this exception with status code 10, which means DEVELOPER ERROR. Keys in Google API console are checked multiple times.
    }
}

在句柄函数中,我总是遇到状态码为 10 的异常,这意味着 DEVELOPER_ERROR。多次检查 Google API 控制台中的密钥。代码被重写了几次......我真的不知道可能出了什么问题。

谢谢 :)

4

1 回答 1

2

您可能忘记配置 Google API 控制台。按照说明操作: https ://developers.google.com/identity/sign-in/android/start-integrating

您会看到使用相应的包名称和签名证书的 SHA1 为 Android 创建 OAuth 客户端 ID。您不必在代码中的任何位置输入此密钥。它只需要存在于 Google API 控制台中。

于 2019-03-28T14:19:23.087 回答