2013-06-12 4 views
0

하나의 Google 드라이브 계정을 사용하는 PHP 애플리케이션을 만들고 있습니다.새로 고침 토큰이있는 OAuth 플로우. 오류 500

관리자는 먼저 Google 드라이브 계정에 대한 권한을 부여합니다. 권한이 승인되면 데이터베이스에 새로 고침 토큰을 저장합니다.

이후, 다른 URL에서 클라이언트가 사용하게 될 것입니다. 인증을 시도하고 있습니다.

다음, 나는 데이터베이스에서 새로 고침 토큰을 당겨, 다음은에 게시 요청합니다

$url = "https://accounts.google.com/o/oauth2/token"; 
매개 변수

:

$post_data = array(
    'client_id' => CLIENT_ID, 
    'client_secret' => CLIENT_SECRET, 
    'refresh_token' => $refreshToken, 
    'grant_type' => 'refresh_token'); 

받으려는 성공적인 응답 후, 나는 access_token과 저장을 하지만 자격 증명을 교환하려고하면이 오류가 발생합니다. 메시지 :

An error occurred: Error fetching OAuth2 access token, message: '  
Error processing OAuth 2 request 

Error 500 
' 
Fatal error: Uncaught exception 'CodeExchangeException' in ... 

Am I m 여기에 뭔가를 내고 있니? oauth 흐름이 올바르게 사용 되었습니까?

미리 감사드립니다.

답변

1

새로 고침 토큰에서 액세스 토큰을 가져 오면 해당 액세스 토큰 자체가 자격 증명이므로 그 이후의 교환 프로세스가 없습니다. 권한 정보에는 다음이 있습니다. 1. 액세스 토큰 2. 새로 고침 토큰. 그리고 액세스 토큰이 아닌 인증 코드 대신 자격 증명을받습니다. 따라서 귀하의 코드에서 액세스 토큰 대신 액세스 토큰을 얻으려고하는 과정에서 오류가 발생했습니다. 회신에 대해서는

+0

thnx입니다. 그래서 refresh token을 사용하여 access_token과 id_token을 포함하는 json obj를 얻습니다. 이 json obj로 무엇을해야합니까? 그것을 전달하여 서비스를 만드시겠습니까? – Paschalis

+0

json 객체로 무엇을해야할지 모르겠습니다. 그러나 어딘가에 새로 고침 토큰과 관련된 추상화가 있어야합니다. google-api-php-client에 대해서는 잘 모르지만 google-api-python-client에서 Credentials.authorize가 자동으로 토큰을 새로 고침하여 만료 된 경우 개발자 수준에서 초기화하지 않습니다. 상쾌하게하는 것에 관해 무엇인가 귀찮게해야한다. 새로 고침과 관련하여 구현 된 추상화가 있어야하며 직접 처리 할 필요가 없습니다. 스스로 새로 고침을 처리하는 대신 설명서를 자세히 읽어 보는 것이 좋습니다. –

관련 문제