Java 成功通过身份验证后,如何使用google api获取用户信息?
我尝试在成功通过gmail帐户身份验证后获取userinfo(tok是一个有效的令牌): 但是对于所有字段,日志显示为“null”,返回的json数据只包含id:Java 成功通过身份验证后,如何使用google api获取用户信息?,java,google-api-java-client,userinfo,Java,Google Api Java Client,Userinfo,我尝试在成功通过gmail帐户身份验证后获取userinfo(tok是一个有效的令牌): 但是对于所有字段,日志显示为“null”,返回的json数据只包含id: { "id": "113695880661351193041" } 我该怎么办?添加一个特殊的作用域来执行此操作?我尝试了好几次都没有成功,只是添加了scope=作为url参数,也许这是错误的 希望有人能帮助或知道如何向我的请求中添加作用域,并从此服务中获得正确的响应。这对我很有用: Credential credential =
{
"id": "113695880661351193041"
}
我该怎么办?添加一个特殊的作用域来执行此操作?我尝试了好几次都没有成功,只是添加了scope=作为url参数,也许这是错误的
希望有人能帮助或知道如何向我的请求中添加作用域,并从此服务中获得正确的响应。这对我很有用:
Credential credential = OAuth2Utils.newFlow().loadCredential(userId);
Oauth2 service = new Oauth2.Builder(OAuth2Utils.HTTP_TRANSPORT, OAuth2Utils.JSON_FACTORY, credential).setApplicationName("appname").build();
UserInfo userInfo = service.userinfo().get().execute();
以下是返回的一些属性:
- userInfo.getBirthday()
- userInfo.getFamilyName()
- userInfo.getGender()
- userInfo.getGivenName()
- userInfo.getHd()
- userInfo.getLink()
/** Global instance of the HTTP transport. */
public final static HttpTransport HTTP_TRANSPORT = new UrlFetchTransport();
/** Global instance of the JSON factory. */
public final static com.google.api.client.json.JsonFactory JSON_FACTORY = new com.google.api.client.json.jackson2.JacksonFactory();
public static GoogleAuthorizationCodeFlow newFlow() throws IOException {
return new GoogleAuthorizationCodeFlow.Builder(HTTP_TRANSPORT, JSON_FACTORY, getClientCredential(),
Arrays.asList(SCOPES)).setCredentialStore(new OAuth2CredentialStore()).setAccessType("offline")
.setApprovalPrompt("force").build();
}
/** Global instance of the HTTP transport. */
public final static HttpTransport HTTP_TRANSPORT = new UrlFetchTransport();
/** Global instance of the JSON factory. */
public final static com.google.api.client.json.JsonFactory JSON_FACTORY = new com.google.api.client.json.jackson2.JacksonFactory();
public static GoogleAuthorizationCodeFlow newFlow() throws IOException {
return new GoogleAuthorizationCodeFlow.Builder(HTTP_TRANSPORT, JSON_FACTORY, getClientCredential(),
Arrays.asList(SCOPES)).setCredentialStore(new OAuth2CredentialStore()).setAccessType("offline")
.setApprovalPrompt("force").build();
}