2

Я переношу OpenID 2.0 на вход OAuth 2.0 (см. https://developers.google.com/accounts/docs/OpenID?hl=ja). Я хочу сопоставить новые идентификаторы OpenID 2.0 со старыми/существующими идентификаторами OpenID Connect, которые у меня есть в моей базе данных.OpenId Connect endpoint возвращает 'not found'

Я должен обрабатывать ответ OAuth (redirect_uri), где я хочу использовать конечную точку https://www.googleapis.com/oauth2/v3/token, чтобы обменять код авторизации для токена доступа и поле openid_id, которое я бы использовал для выбора существующего пользователя в моей БД.

Однако мой призыв к https://www.googleapis.com/oauth2/v3/token возвращает «не найден». Почему?

Я использую писец 1.3.7, и это мой код:

OAuthService service = new ServiceBuilder().provider(Google2Api.class).apiKey(xxxxxxxx).apiSecret(yyyyyyyyyyyyyyy).callback(zzzzzzzzzzzzzzzzzzzz).scope("openid profile https://mail.google.com/ https://www.googleapis.com/auth/userinfo.email").build(); 
Token accessToken = service.getAccessToken(null, new Verifier(oauth_verifier); 
OAuthRequest request = new OAuthRequest(Verb.GET, "https://www.googleapis.com/oauth2/v3/token"); 
request.addQuerystringParameter("format","json"); 
request.addQuerystringParameter(OAuthConstants.REALM, "http://*.unclestock.com"); 
service.signRequest(accessToken, request); 
Response response = request.send(); 
// result -> not found 
+0

фрагмент кода не имеет смысла: это service.getAccessToken(), который должен использовать конечную точку токена, которая обменивает код авторизации для токена доступа. Эта операция вызывает действительно POST. Запрос обслуживает доступ к защищенному ресурсу. Поэтому я обновил Google2Api, чтобы обратиться к конечной точке v3/token. – peternees

ответ

3

GET запросы https://www.googleapis.com/oauth2/v3/token возвращения 'не найдено'. Для этого вам необходимо использовать HTTP POST.

Обновить строку 3 из кода к следующему, и попробовать еще раз:

OAuthRequest request = new OAuthRequest(Verb.POST, "https://www.googleapis.com/oauth2/v3/token"); 

Вы можете прочитать больше об обмене кода доступа лексем и ID Токен в official docs.

Смежные вопросы