0

我正在尝试使用 Google OAuth。我正在开发在 IBM WebSphere 服务器上运行的 Web 应用程序。应用程序的框架是 SpringMVC。

我正在尝试获取 userinfo.profile。我已成功获取访问令牌,但找不到使用此令牌和获取用户信息的方法。

我正在将浏览器重定向到此 URL https://www.googleapis.com/oauth2/v2/userinfo?access_token="+access.getAccessToken();,但出现错误

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "authError",
    "message": "Invalid Credentials",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Invalid Credentials"
 }
}

我是否可以正常使用此访问令牌,还是应该以其他形式发送请求?

我以这种方式发送请求:

GenericUrl shortenEndpoint = new GenericUrl("https://www.googleapis.com/oauth2/v2/userinfo");
HttpRequest request1 = rf.buildGetRequest(shortenEndpoint);
GoogleHeaders headers = new GoogleHeaders();
headers.setContentType("application/json; charset=UTF-8");
headers.setAuthorization("OAuth " + accessToken); 
request1.setHeaders(headers);
HttpResponse shortUrl = request1.execute();

在浏览器的此 URL 中提供我的访问令牌后

https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=******

我有

{
 "issued_to": "*****************",
 "audience": "*****************",
 "scope": "https://www.googleapis.com/auth/urlshortener",
 "expires_in": 3515,
 "access_type": "online"
}
4

2 回答 2

6

查看 tokeninfo 响应,颁发令牌的范围与您尝试访问的 API 不匹配。您似乎有https://www.googleapis.com/auth/urlshortener范围的访问令牌。如果您想使用 userinfo API,您应该获取https://www.googleapis.com/auth/userinfo.profilehttps://www.googleapis.com/auth/userinfo.email范围的令牌。

于 2013-01-24T01:45:33.107 回答
1

您的授权标头似乎不正确。

尝试:headers.setAuthorization("OAuth " + accessToken);

于 2013-01-23T09:38:40.793 回答