1

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

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

但是如何使用谷歌图书馆做到这一点?使用什么库等等?

4

3 回答 3

1

根据您尝试使用的服务,只需选择合适的Google 客户端库并查看Google+ 示例

所有 API 的前半部分应该基本相同。要获取用户信息,您需要该oauth2,然后执行以下操作(取自此示例):

// 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();
于 2012-07-04T14:53:18.307 回答
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 ...
于 2014-10-07T12:06:00.663 回答
0

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

String jwt = "YOUR_ID_TOKEN";
GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(new NetHttpTransport(),new GsonFactory())
                        .setAudience(Collections.singletonList("YOUR_CLIENT_ID"))
                        .build();
        
    GoogleIdToken idToken;
        
    try {
          idToken = verifier.verify(jwt);
        } catch (GeneralSecurityException e) {
           throw new RuntimeException("Cannot verify the ID_TOKEN send :" + e.getMessage());
        }
        
    if(idToken == null){
          throw new RuntimeException("Failed to verify the ID_TOKEN send");
        }
        
    String username =  idToken.getPayload().getEmail();
于 2021-08-04T10:38:02.407 回答