如何从java代码验证google oauth2令牌

时间:2012-07-04 12:09:35

标签: oauth token

我有一个Android应用程序和Web服务器一起工作。现在我希望用户通过谷歌从Android应用程序登录(或使用Android上的一个谷歌帐户)。然后andriod应用程序通过服务调用将令牌传递给我的网络服务器...在这里我无法实现如何从谷歌获得用户电子邮件或个人资料数据。

我可以在浏览器中拨打这样的电话:https://www.googleapis.com/oauth2/v1/tokeninfo?access_token= {accessToken}

但是如何使用谷歌图书馆呢?使用什么库等等?

3 个答案:

答案 0 :(得分:1)

根据您尝试使用的服务,只需选择Google's Client Libraries中的正确服务,然后查看Google+ Sample

对于所有API,前半部分应该基本相同。要获取用户信息,您需要oauth2 library,然后执行此类操作(取自this example):

// Set up the HTTP transport and JSON factory
HttpTransport httpTransport = new NetHttpTransport();
JsonFactory jsonFactory = new JacksonFactory();

// Set up OAuth 2.0 access of protected resources
// using the refresh and access tokens, automatically
// refreshing the access token when it expires
GoogleAccessProtectedResource requestInitializer =
    new GoogleAccessProtectedResource(accessToken, httpTransport,
    jsonFactory, clientId, clientSecret, refreshToken);

// set up global Oauth2 instance
Oauth2 oauth2 = new Oauth2.Builder(httpTransport, jsonFactory, requestInitializer)
    .setApplicationName("Google-OAuth2Sample/1.0").build();

Userinfo userinfo = oauth2.userinfo().get().execute();

答案 1 :(得分:1)

我使用了此处的代码示例:https://github.com/googleplus/gplus-verifytoken-java,它似乎更新。代码最终变成了:

GoogleCredential credential = new GoogleCredential().setAccessToken( accessToken );
Oauth2 oauth2 = new Oauth2.Builder(
    UrlFetchTransport.getDefaultInstance(),
    JacksonFactory.getDefaultInstance(), credential )
    .build();
Tokeninfo tokenInfo = oauth2.tokeninfo().setAccessToken( accessToken ).execute();

// ... check tokeninfo expiry and issued to etc ...

答案 2 :(得分:0)

您将需要此库 google-api-client JAR。这是工作代码如何做到这一点。随身携带您的 ID_TOKEN 和 CLIENT_ID。

for i in range(2, userInput):