2

OpenID 2.0을 OAuth 2.0 로그인으로 마이그레이션 중입니다 (https://developers.google.com/accounts/docs/OpenID?hl=ja 참조). 내 DB에있는 기존/기존 OpenID Connect 식별자에 새 OpenID 2.0 식별자를 매핑하고 싶습니다.OpenId Connect endpoint가 '찾을 수 없음'을 반환합니다.

나는 https://www.googleapis.com/oauth2/v3/token 엔드 포인트를 사용하여 OAuth 응답 (redirect_uri)을 처리 할 시점에 기존 토큰을 선택하는 데 사용할 액세스 토큰 및 openid_id 필드에 대한 인증 코드를 교환합니다. 내 DB에있는 사용자.

그러나 https://www.googleapis.com/oauth2/v3/token으로 전화하면 '찾을 수 없음'이 반환됩니다. 어떤 단서?

나는 학자 1.3.7를 사용하고,이 내 코드입니다 : https://www.googleapis.com/oauth2/v3/token 다음으로 돌아 가기

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 요청 '을 찾을 수 없습니다'. 요청시 HTTP POST을 사용해야합니다.

다음과 코드의

업데이트 라인 3, 다시 시도 :

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

당신은 official docs 토큰 액세스 및 ID 토큰에 대한 코드를 교환에 대한 자세한 내용을보실 수 있습니다.