我试图通过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控制台上的同一个项目中。
不知道我还能做错什么。
答案 0 :(得分:4)
我发现了问题:build.gradle
文件的applicationId
值略微(拼写错误),而不是API控制台中设置的值。
虽然在这种情况下一些简单的错误信息会很棒。