【发布时间】:2014-09-07 05:27:07
【问题描述】:
我正在尝试通过 Google Plus 登录获取授权代码,以便在服务器上使用它。 G+ 登录有效,我已在设备上登录,但是当我尝试获取令牌时,我收到了异常有用的消息 Unknown。这是代码:
private class GoogleLoginTask extends AsyncTask<Void, Void, String> {
private static final String LOGIN_SCOPES =
"https://www.googleapis.com/auth/plus.login " +
"https://www.googleapis.com/auth/userinfo.email";
@Override
protected String doInBackground(Void[] params) {
String apiKey = getApplicationMetaData("google.client-id");
String scopes = "oauth2:server:client_id:" + apiKey
+ ":api_scope:" + LOGIN_SCOPES;
Bundle appActivities = new Bundle();
appActivities.putString(GoogleAuthUtil.KEY_REQUEST_VISIBLE_ACTIVITIES,
"http://schema.org/AddAction");
String code = null;
try {
code = GoogleAuthUtil.getToken(getBaseContext(),
getPlusClient().getAccountName(), scopes, appActivities);
} catch (IOException e) {
Toast.makeText(getBaseContext(), R.string.error_network, Toast.LENGTH_LONG).show();
} catch (UserRecoverableAuthException e) {
startActivityForResult(e.getIntent(), AUTH_CODE_REQUEST_CODE);
} catch (GoogleAuthException e) {
Log.e(TAG, "Google auth exception: ", e);
} catch (Exception e) {
throw new RuntimeException(e);
}
return code;
}
}
我直接从Developer Page 获取代码。虽然文档没有澄清许多参数,但我认为我的理解是正确的。
我已经三次检查了apiKey 和getPlusClient().getAccountName() 的内容,它们是正确的。我确保应用程序和服务器在 API 控制台上的同一个项目中。
不知道我还会做错什么。
【问题讨论】:
标签: java android google-plus google-oauth google-api-client