我有一个Java ClientRequest到Google API,它返回一个包含基于access_token的配置文件的JSON。URL是:
https://www.googleapis.com/oauth2/v1/userinfo?access_token=ya29.1.AADtN_VALuuUTBm8ENfNTz8s..。
响应是:
<>之前{"id":"111223344556677889900","电子邮件":"myemail@gmail.com","verified_email":没错,"name": "My name","given_name":"我的","family_name":"名字","链接":"plus.google.com/111223344556677889900","照片":"photo.jpg","性别":"男性","语言环境":"恩"}之前一些要点:
1我想使用Java库来避免挂载HTTP请求,保留google服务器URL和其他次要的东西。
2我不需要授权步骤,因为此时,我的方法接收访问令牌(所有Oauth步骤都在之前完成)。
3在这个方法中,我们没有(到目前为止也不需要)客户端id和secret。
4我不需要Google+范围。事实上,我不想去那里。到目前为止,只找到了使用Plus库的示例。
总之,我需要在google 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();
可能引发"JacksonFactory无法解析为类型",如果发生这种情况,您可以将其替换为new GsonFactory()
(从com.google.api.client.json.gson),它将工作。
现在,关于如何获得accessToken
:它来自com.google.auth.oauth2.UserCredentials
(com.google.auth.oauth2.UserCredentials),您可以通过调用com.google.auth.oauth2.UserAuthorizer.getCredentialsFromCode
获得。
可以通过调用
来构建UserAuthorizer
UserAuthorizer
.newBuilder()
.setClientId(ClientId.of(<client id>, <client secret>))
.setScopes(<scopes>)
.build()
你可以得到<client id>
和<client secret>
通过读取OAuth客户端ID文件创建在你的谷歌云项目仪表板下凭据。
最后,一个如何使用com.google.auth.oauth2.ClientId
读取文件的示例:
ClientId parsedClient = ClientId.fromStream(new FileInputStream("key.json"))
我来晚了一点,但我希望这能帮助到大家。