2013-01-23 2 views
0

Google OAuth를 사용하려고합니다. IBM WebSphere 서버에서 실행중인 웹 응용 프로그램을 개발 중입니다. 응용 프로그램의 프레임 워크는 SpringMVC입니다.OAuth : 액세스 토큰 보내기 및 사용자 데이터 가져 오기

나는 userinfo.profile을 얻으려고합니다. 에 액세스 토큰을 성공적으로 가져 왔으며이 토큰을 사용하고 사용자 정보를 얻을 수있는 방법을 찾지 못했습니다.

나는

{ 
"error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "authError", 
    "message": "Invalid Credentials", 
    "locationType": "header", 
    "location": "Authorization" 
    } 
    ], 
    "code": 401, 
    "message": "Invalid Credentials" 
} 
} 

내가이 액세스 토큰 잘 사용하고 아니면 다른 어떤 형태로 요청을 보내야합니다 오류 URL을 https://www.googleapis.com/oauth2/v2/userinfo?access_token="+access.getAccessToken();에 브라우저를 리디렉션하지만 얻고 있었다?

내가 이런 식으로 요청을 보낸다 : 내가 가진

https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=****** 

브라우저에서 URL에 내 액세스 토큰을 제공 한 후

GenericUrl shortenEndpoint = new GenericUrl("https://www.googleapis.com/oauth2/v2/userinfo"); 
HttpRequest request1 = rf.buildGetRequest(shortenEndpoint); 
GoogleHeaders headers = new GoogleHeaders(); 
headers.setContentType("application/json; charset=UTF-8"); 
headers.setAuthorization("OAuth " + accessToken); 
request1.setHeaders(headers); 
HttpResponse shortUrl = request1.execute(); 

{ 
"issued_to": "*****************", 
"audience": "*****************", 
"scope": "https://www.googleapis.com/auth/urlshortener", 
"expires_in": 3515, 
"access_type": "online" 
} 
+0

'Authorization' 헤더를 사용하여 토큰을 보내도 실패합니까? – jphuynh

+0

나는 그것을 시도하지 않았다. 이 헤더를 보내는 예제를 보여 주시겠습니까? –

+0

http 요청을 보낸 방법을 자세히 설명해 주시겠습니까? – jphuynh

답변

5

, 토큰이 발행하는 범위와 액세스하려고하는 API 사이에 불일치가있다. https://www.googleapis.com/auth/urlshortener 범위의 액세스 토큰이있는 것 같습니다. userinfo API를 사용하려면 https://www.googleapis.com/auth/userinfo.profilehttps://www.googleapis.com/auth/userinfo.email 범위에 대한 토큰을 얻어야합니다.

+0

당신은 아름다움. 이 얼마나 발굴. 만약 한 번 이상 의결권을 행사할 수있는 옵션이 있다면 나는 이것을 10 번 할 것입니다. –

+0

두 범위를 모두 사용하려면 어떻게해야합니까? –

+0

위대한 발견 @vlatko, 고마워. 이므 란, 여러 범위에 대해, 당신은 당신의 URL에 그들을 통과해야합니다. 그들은 공백으로 구분되어야합니다. 예 :'scope = https : //www.googleapis.com/auth/userinfo.email+https : // www.googleapis.com/auth/userinfo.profile' – jphuynh

1

그것은 당신의 승인 보인다 헤더가 잘못되었습니다.

봅니다와 함께 다음 tokeninfo 응답을 보면 headers.setAuthorization("OAuth " + accessToken);

+0

변경 후 동일한 오류가 발생합니다. –

+0

토큰이 유효하다는 것을 확인할 수 있습니까? 확인하려면 https : //www.googleapis.com/oauth2/v1/tokeninfo? access_token = 'yourToken'을 호출 할 수 있습니다. – jphuynh

+0

토큰은 괜찮지 만 응용 프로그램에서 사용할 때 오류가 있음을 나타내는 일부 데이터를 반환합니다. 토큰에 대해 편집 된 질문입니다. –