繁体   English   中英

如何使用 JAVA 库在 Google API 上获取用户配置文件?

[英]How to get user profile on Google API using the JAVA library?

我有一个 Java ClientRequest 到Google API ,它返回一个 json,其中包含基于 access_token 的配置文件。 URL 是:
https://www.googleapis.com/oauth2/v1/userinfo?access_token=ya29.1.AADtN_VALuuUTBm8ENfNTz8s ...

回应是:

{
    "id": "111223344556677889900",
    "email": "myemail@gmail.com",
    "verified_email": true,
    "name": "My Name",
    "given_name": "My",
    "family_name": "Name",
    "link": "plus.google.com/111223344556677889900",
    "picture": "photo.jpg",
    "gender": "male",
    "locale": "en"
}

几点:

1我想使用 java 库来避免挂载 http 请求,保留谷歌服务器 url 和其他小事。
2我不需要授权的步骤,因为此时我的方法接收到访问令牌(之前完成了所有 oauth 步骤)。
3在这种方法中,我们没有(目前也不需要)客户端 ID 和密码。
4我不需要 Google+ scope。 其实我更喜欢不要 go 那里。 到目前为止,只找到了使用 Plus 库的示例。

总之,我需要谷歌 api java 库中的一些东西,这与现在使用的 http 请求完全相同。

非常感谢您!

我希望这有帮助

GoogleCredential credential = new GoogleCredential().setAccessToken(accessToken);   
 Oauth2 oauth2 = new Oauth2.Builder(new NetHttpTransport(), new JacksonFactory(), credential).setApplicationName(
          "Oauth2").build();
 Userinfoplus userinfo = oauth2.userinfo().get().execute();
 userinfo.toPrettyString();

补充更多信息,因为我没有足够的声誉来评论上述答案:

添加后

<dependency>
    <groupId>com.google.apis</groupId>
    <artifactId>google-api-services-oauth2</artifactId>     
    <version>v2-rev65-1.17.0-rc</version>
</dependency>

到您的pom.xml文件,以下行

Oauth2 oauth2 = new Oauth2.Builder(new NetHttpTransport(), new JacksonFactory(), credential).setApplicationName("Oauth2").build();

could raise "JacksonFactory cannot be resolved to a type", and if this happens, you can replace it with new GsonFactory() (from com.google.api.client.json.gson ), and it'll work.

Now, about how to get an accessToken : it comes inside com.google.auth.oauth2.UserCredentials ( com.google.auth.oauth2.UserCredentials ), which you can get by calling com.google.auth.oauth2.UserAuthorizer.getCredentialsFromCode .

您可以通过调用构建UserAuthorizer

UserAuthorizer
    .newBuilder()
    .setClientId(ClientId.of(<client id>, <client secret>))
    .setScopes(<scopes>)
    .build()

您可以通过阅读在您的谷歌云项目仪表板上的凭据创建的 OAuth 客户端 ID 文件来获取<client id><client secret>

最后,一个如何使用com.google.auth.oauth2.ClientId读取文件的示例:

ClientId parsedClient = ClientId.fromStream(new FileInputStream("key.json"))

我在这里有点晚了,但我希望这对某人有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM