Java 成功通过身份验证后,如何使用google api获取用户信息?

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 =

我尝试在成功通过gmail帐户身份验证后获取userinfo(tok是一个有效的令牌):

但是对于所有字段,日志显示为“null”,返回的json数据只包含id:

{
 "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()

代码中引用的实用程序类OAuth2Utils:

/** 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();
}