如何在谷歌上调用https://www.googleapis.com/plus/v1/people/me

use*_*596 8 android oauth token

我正在开发一个Android应用程序,需要从谷歌获取"我"信息,但我总是在响应代码401或403中结束.我做错了什么?这是我的代码:

private static final String GOOGLE_AUTH_TOKEN_TYPE = "oauth2:https://www.googleapis.com/auth/plus.me";
Run Code Online (Sandbox Code Playgroud)

我得到了oauth令牌(注意......下面的代码缩短了):

Account googleAccount = (AccountManager) getSystemService(ACCOUNT_SERVICE).getAccountsByType("com.google")[0];
final Bundle bundle = manager.getAuthToken(googleAccount, GOOGLE_AUTH_TOKEN_TYPE, true, null, null).getResult();
String authToken = bundle.getString(AccountManager.KEY_AUTHTOKEN);
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都很好......我现在有了一个令牌,所以这里的一切看起

现在得到我的信息:

String GOOGLE_ME_URL = "https://www.googleapis.com/plus/v1/people/me";
final DefaultHttpClient client = new DefaultHttpClient();
final HttpGet request = new HttpGet(GOOGLE_ME_URL);
request.addHeader("Authorization", "OAuth=" + authToken);
final HttpResponse response = client.execute(request);
Run Code Online (Sandbox Code Playgroud)

这给出了响应代码401.

我也尝试过:

final DefaultHttpClient client = new DefaultHttpClient();
final HttpGet request = new HttpGet(GOOGLE_ME_URL + "?access_token=" + authToken);
final HttpResponse response = client.execute(request);
Run Code Online (Sandbox Code Playgroud)

这给出了响应代码403 - 比如"超出每日限制.请注册".

我究竟做错了什么?我错过了什么?该怎么做?

谢谢

//以下编辑更多调查:我在code.google.com/apis/console中添加了一个项目,并从中生成了密钥并放入网址,如:https: //www.googleapis.com/plus/v1/people/me?key = my_generated_key&access_token = "+ authToken.现在通话工作正常,我收到了200条回复,并提供了正确的信息.但我真的不想使用这种方法,如果我不需要和根据谷歌我不应该"•如果请求需要授权(例如请求个人的私人数据),那么它必须包含OAuth 2.0令牌.它也可能包含API密钥,但它不必包含." - 来自developers.google.com/+/api/oauth.

另一件事:如果我尝试另一个网址,如" https://www.googleapis.com/oauth2/v1/tokeninfo?access_token="+ authToken,它可以正常工作.

Chi*_*hah 13

问题是关于传递给请求的简单api密钥.

如果请求中未包含关键参数,或者未针对该项目激活Google+ API,则会收到错误消息:"超出每日限制.请注册".

要解决此问题,您需要执行以下操作:

  • 访问Google API控制台:https://code.google.com/apis/console/? api = plus
  • 在"服务"面板下,确保Google+"已启用".
  • 在API控制台中,单击左侧菜单中的API Access.
  • 将API密钥复制到底部.
  • 在您的HTTP请求中包含此API密钥.
GOOGLE_ME_URL + "?access_token=" + authToken + "&key=" + MY_SIMPLE_API_KEY
Run Code Online (Sandbox Code Playgroud)


Sca*_*arr 0

您现在正在使用 HTTP,但实际上是通过 HTTPS 调用站点。使用安全连接过程或使用http://地址。