Как получить адрес электронной почты из кода авторизации OAuth2 - PullRequest
0 голосов
/ 04 октября 2018

Когда пользователь входит в учетную запись Gmail по протоколу Oauth2 и завершает его, мой сервер получает код авторизации, и я обмениваю этот код на токен обновления и токен доступа, все работает, как запланировано, но мне тоже нужно получить адрес электронной почты.Я имею в виду, если пользователь вошел как helloworld@gmail.com, каким-то образом с кодом авторизации, я хотел бы узнать этот адрес, могу ли я как-нибудь узнать его?

Это конечная точка, где я обмениваюсь кодом авторизации на токене доступа итокен обновления:

 public OAuth2AccessToken oauth(String authorizationCode) {
        AuthorizationCodeResourceDetails resource = new AuthorizationCodeResourceDetails();
        resource.setUserAuthorizationUri(userAuthorizationUri);
        resource.setAccessTokenUri(accessTokenUri);
        resource.setClientId(clientId);
        resource.setClientSecret(clientSecret);
        resource.setPreEstablishedRedirectUri(redirectUrl);
        resource.setScope(scopes);
        resource.setUseCurrentUri(false);

        AccessTokenRequest request = new DefaultAccessTokenRequest();
        request.setPreservedState(new Object());
        request.setAuthorizationCode(authorizationCode);

        AuthorizationCodeAccessTokenProvider provider = new AuthorizationCodeAccessTokenProvider();
        OAuth2AccessToken accessToken = provider.obtainAccessToken(resource, request);

        return accessToken;
    }

У меня нет WebSecurityConfigurerAdapter для OAuth2

1 Ответ

0 голосов
/ 05 октября 2018

Если адрес электронной почты пользователя еще не указан в части id_token ответа oauth2, вы можете использовать операцию Gmail API Users.getProfile, используя специальное значение "me" в качестве userId для ссылки на аутентифицированного пользователя.

См .: https://developers.google.com/gmail/api/v1/reference/users/getProfile

Это должно дать вам ответ вроде:

{
  "emailAddress": -string-,
  "messagesTotal": -integer-,
  "threadsTotal": -integer-,
  "historyId": -unsigned long-
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...