2

Gmail 사용자의 연락처를 Google API를 통해 가져오고 싶습니다.Google OAuth2에서 사용자 로그인 및 동의 후에 액세스 토큰을 받고 토큰을 새로 고치는 방법은 무엇입니까?

  1. 사용 Client secret and key이 허가 된 URL을 얻을 :

    나는 다음 있습니다. 이것은 내 앱에 대한 권한을 허용하기 위해 사용자가 방문하는 URL입니다.

  2. 승인 된 URL은 앱 설정에 지정된 리디렉션 URI로 리디렉션됩니다.

  3. URL에 검색어 매개 변수 code가 있는데 이는 문서가 here라고 말하는 인증 코드임을 짐작하고 있습니다.

문제 :

나는 가능하면 javascript 통해 access tokenrefresh token를 얻기 위해이 코드를 교환합니다. 하지만 javascript에서이 부분에 대한 문서를 볼 수 없습니다. 내 서버 측에서

은 내가 authorized url 얻기 위해이 일을하고있다 :

token = gdata.gauth.OAuth2Token(client_id=settings.GMAIL_CLIENT_ID, 
           client_secret=settings.GMAIL_API_KEY, 
           scope=scope, user_agent=user_agent) 

auth_url = token.generate_authorize_url(redirect_uri=redirect_uri) 

을 다음 auth_url로 사용자를 리디렉션. 이제 사용자가 요청 된 권한을 허용하면 쿼리 매개 변수 code을 사용하여 내 사이트로 다시 리디렉션됩니다. 여기 javascript을 사용하여 access token을 얻고 싶습니다.

다른 옵션은 사용자가 내 사이트로 리디렉션되고 응답과 함께 그에게 돌려 보내면 서버 측에 access token을 얻는 것입니다.하지만 실제로는이 작업을 원하지 않습니다.

+0

당신이 당신의 문제를 해결 한 Using OAuth 2.0 for Client-side Applications에서 암시 부여 유형에 대한 구글 문서를 찾을 수 있습니까? 나는 같은 문제가있다. –

답변

0

짧은 대답 : OAuth2 클라이언트 측 인증을 사용하려는 경우 잘못된 설명서를 사용하고 있습니다.

이제 자세히 설명합니다.

  1. 인증 코드,
  2. 암시,
  3. 자원 소유자 암호 자격 증명
  4. 클라이언트 자격 증명
:

OAuth2를 4 보조금 종류가 있습니다

자세한 내용은 설명이있는 this nice post을 참조하십시오.

OAuth2 for Web Servers에 대한 Google 문서는 인증 코드 유형을 나타냅니다.client_secret을 교환해야하기 때문에 SSL을 통한 웹 서버 데이터 교환에 의존합니다.

즉, JavaScript를 사용하여 access_token을 얻으려고 POST 요청을 시도하면 client_secret이 POST 호출의 필수 매개 변수이므로 노출됩니다.

서버 측 코드를 사용하지 않고 access_token을 요청하려는 경우 암시 적 부여 유형을 사용해야합니다.

당신은