0

我在我的应用程序中添加了 Google+ 登录,一旦我有了帐户名,我想通过这种方式获取基本的用户个人资料信息:

URL url = new URL("https://www.googleapis.com/oauth2/v1/userinfo");
//get Access Token with Scopes.PLUS_PROFILE
String sAccessToken = GoogleAuthUtil.getToken(mActivity.this,
                        mPlusClient.getAccountName() + "",
                        "oauth2:" + Scopes.PLUS_PROFILE
                        + " https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email");
                        urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestProperty("Authorization", "Bearer "
        + sAccessToken);
BufferedReader r = new BufferedReader(new InputStreamReader(
        urlConnection.getInputStream(), "UTF-8"));
StringBuilder total = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
    total.append(line);
}
line = total.toString();

它通常会给我这些细节:

“id” “email” “give_name” “family_name” “name” “link” “verified_email” “gender” “locale” “picture”

但是在测试时,我使用firstName和创建了一个新的 Google 帐户LastName。它已显示在我的 Google+ 帐户上。

但是,当我使用此帐户名为用户信息调用相同的 API 时,我得到:

{“id”:“xxxxxxxxxxxxxxxxxxxxxxxx”,“email”:“xxxxxx@gmail.com”,“verified_email”:true,“locale”:“en”}

与名字无关。

这种情况有什么解决办法吗?

谢谢你

4

2 回答 2

1

对于 Google+ 登录,您不想稍有不同。而不是点击 userinfo 端点,而是点击 Google+ 个人资料端点:https://developers.google.com/+/api/latest/people/get。在 Android 上,这就像在 Google Play 服务中调用 PlusClient 中的辅助方法一样简单: mPlusClient.loadPerson(this, "me");

使用“我”作为用户 ID 将返回当前登录用户的个人资料,其中包括显示名称。

您拥有的范围将起作用,但您不需要 userinfo.profile,您可以将 PLUS_PROFILE 更改为 PLUS_LOGIN 以获得更多灵活性!

查看更新的登录文档以获取更详细的示例:https ://developers.google.com/+/mobile/android/sign-in和https://developers.google.com/+/mobile/android /people#retrieve_profile_information

于 2013-03-07T10:53:44.033 回答
0

您是否按照此处列出的步骤在 Google API 控制台中注册您的数字签名 .apk 文件的公共证书?

于 2013-03-08T01:46:01.957 回答