0

현재 프로젝트의 경우 Cloud Endpoints와 Cloud Storage API를 동시에 사용하고 싶습니다. Google Cloud Endpoints 및 Google Cloud Storage 용 OAUTH와 gapi 클라이언트 라이브러리를 동시에 사용하는 방법

구글의 예를 틱택 토 응용 한이 같은 id_token로 access_token과를 설정해야한다고 클라우드 엔드 포인트에 대한 인증

( github repository 참조) access_token과는

var token = gapi.auth.getToken(); 
// Use id_token instead of bearer token 
token.access_token = token.id_token; 

그러나 일단 id_token으로 설정하면 더 이상 다른 Google apis를 사용할 수 없습니다. 제 경우에는 Cloud Storage API입니다. 그 이유는 현재 액세스 토큰이 유효하지 않기 때문입니다. 예를 들어 클라우드 저장소 API는 잘못된 자격증 명을 반환합니다. access_token이 id_token으로 설정되기 전에 access_token은 ya29.AHES6ZTjklghkljghlkjfghkljsrdölizuklhlfghI_UTfghdfghCg과 같습니다. 그것은 정말 길기 때문에 여기에 게시하고 싶지 않은 id_token으로 대체됩니다. 내가 생각할 수있는

두 솔루션은 다음과 같습니다 별도의 인증 객체 및 토큰

  • 복사 GAPI 개체, 각. 클라우드 종점 용 id_token과 나머지 용 ID_token을 사용하십시오 (이 경우에도 객체를 복사 할 수 없습니다.)
  • auth 토큰을 어딘가에 기억하고 API (클라우드 종점/다른 api) 나는 (이것은 아마 동기화가 필요하고 다소 엉망이 될 것이다)

나는이 문제에 대한 해결책과 가능한 해결 방법에 매우 흥미가있다.

이 문제가 발생하면 아래 답변과 의견을 읽으십시오. 작업을 완료하면 실제로이 질문이 여기에 더 많은 질문임을 이해하게 될 것입니다. How do I test Cloud Endpoints with Oauth on devserver

누군가 내부에서 검색어를 검색 할 경우를 대비하여 질문을 남겨 두겠습니다.

+0

'gapi.auth.authorize' 기능을 사용하고 있습니까? 그렇다면'scope' 매개 변수를 사용하여 여러 API에 토큰 범위를 지정할 수 있습니다. – jterrace

+0

예, 저는 userinfo.email과 cloud storage의 두 범위에서'gapi.auth.authorize'를 사용합니다. 권한 부여 기능은'gapi.client.oauth2.userinfo.get을 수행하는 콜백()를 호출합니다. 실행 (기능 (RESP) { \t \t 경우 (! resp.code) { \t \t \t VAR 토큰 = gapi.auth. getToken(); \t \t \t token.access_token = token.id_token; \t \t \t gapi.auth.setToken (토큰)' 하지만 access_token과 id_token가 설정되면, 기억 API 내게 잘못된 오류 자격을 준다 반면 clound는 잘 작동합니다. – konqi

답변

1

Python Tic Tac Toe 샘플이 업데이트가 필요합니다. ID 토큰은이 특별한 경우에 더 이상 필요하지 않습니다. (Java example은 Google+ 로그인을 사용하므로 약간 다른 요구 사항이 있습니다.)

토큰을 조작하지 않아도됩니다. 그러면 엔드 포인트와 다른 호출중인 다른 Google API에서 자동으로 작동합니다. 이 모양이 무엇인지 보려면 Python "Hello Endpoints" example을 참조하십시오.

+0

나는 그것을 시도 할 것입니다.어제 본 것은 access_token이 id_token이 아닐 때 클라우드 엔드 포인트가 더 이상 작동하지 않는다는 것입니다.하지만 거기에 뭔가 잘못되었을 수 있습니다. 새로운 파이썬 예제가 더 좋아 보인다. App Engine SDK를 업그레이드해야하는지 궁금하다. – konqi

+0

당신이 옳습니다. 우리는 access_token을 id_token으로 대체 할 필요가 없습니다. 문제는, 내가 지금 알았 듯이 : id_token을 사용하지 않으면 user.getEmail()은 [email protected]을 반환합니다. 그리고 거기에 이미 열려있는 스택 오버플로 질문이 있습니다, 여기를 참조하십시오 : http://stackoverflow.com/questions/19117695/how-do-i-test-cloud-endpoints-with-oauth-on-devserver – konqi

관련 문제