尝试获取令牌时,GoogleAuthException“未知”

时间:2014-07-16 15:36:04

标签: java android google-plus google-oauth google-api-client

我试图通过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获取了代码。虽然文档没有澄清许多参数,但我认为我已经正确使用了。

我已经对apiKeygetPlusClient().getAccountName()内容进行了三重检查,但这些内容是正确的。我确保应用程序和服务器在API控制台上的同一个项目中。

不知道我还能做错什么。

1 个答案:

答案 0 :(得分:4)

我发现了问题:build.gradle文件的applicationId值略微(拼写错误),而不是API控制台中设置的值。

虽然在这种情况下一些简单的错误信息会很棒。

相关问题