我需要启用对 Google Drive 的服务器端访问。在这种情况下,一个人正在使用他的 Android 设备。据我了解,步骤如下: 1. 创建 GoogleSignInOptions 2. 使用 GoogleSignInOptions 创建 GoogleSignInAccount 3. 从 GoogleSignInAccount 获取 authCode 4. 将 authCode 交换为访问/刷新/ID 令牌
我被困在第 3 步。我遵循了描述良好的教程但没有成功 - https://developers.google.com/identity/sign-in/android/offline-access,https://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 控制台中的密钥。代码被重写了几次......我真的不知道可能出了什么问题。
谢谢 :)