2013-11-25 7 views
0

나는이 모든 OAuth 인증 방법이 어떻게 작동하는지 이해하지 못하고 나는 거의 갇혀있다. 사용자가 Google PHP 클라이언트 API를 사용하여 내 서버에 자신의 YouTube 계정을 인증하도록 허용하려고합니다.YouTube API OAuth 무효 요청

<?php 
require_once app_path().'/google-apis/Google_Client.php'; 
require_once app_path().'/google-apis/contrib/Google_YouTubeService.php'; 
class SignupController extends BaseController { 

    public function showSignupForm() { 
     $client = new Google_Client(); 
     $client->setClientId('CLIENTID'); 
     $client->setClientSecret('CLIENTSECRET'); 
     $client->setAccessType('offline'); 
     $client->setDeveloperKey('DEVKEY'); 

     $youtube = new Google_YoutubeService($client); 
     $client->authenticate(Input::get('code')); 

     $token = json_decode($client->getAccessToken()); 

     return View::make('signup')->with('google_token', $token->access_token); 
    } 
    public function getYTAccess() { 
     $client = new Google_Client(); 
     $client->setClientId('CLIENTID'); 
     $client->setClientSecret('CLIENTSECRET'); 
     $client->setAccessType('offline'); 
     $client->setDeveloperKey('DEVKEY'); 
     $client->setRedirectUri('REDIRECT_URI'); 
     $youtube = new Google_YoutubeService($client); 

     $authUrl = $client->createAuthUrl(); 
     return View::make('connect_youtube')->with('authUrl', $authUrl);; 
    } 

} 
?> 

이 내가 구축하고있어 Laravel 기반 응용 프로그램에서 SignupController 코드입니다 :

여기에 내 현재 코드입니다. 다음과 같이 관련 경로는 다음과 같습니다

Route::get('signup/connect_youtube/return', '[email protected]'); 
Route::get('signup', '[email protected]'); 

난 단지 내 응용 프로그램으로 리디렉션하기 후 잘못된 요청 오류가 난 그냥 무엇을 모르는,이 액세스 토큰과 함께 할 수있는 뭔가가 알고있다.

도움을 주시면 감사하겠습니다.

감사 (분명히 생략 비밀)

토비아스 Timpe

답변

1

은 간단히 말해, 2 단계가 있습니다 (적어도) 당신은 할 필요가 : 1. Google에 올바른 매개 변수를 전달합니다. 매개 변수는 1. 당신이 누구인지 (당신은 당신의 클라이언트 ID와 클라이언트 비밀을 제시해야 함), 2. 당신이 요구 한 것 (당신의 경우에는 youtube scope) 3. redirect_uri는 그녀가 받아 들인 후 다시 방향이 바뀔 곳입니다 앱의 요청. 4. auth 플로우를 계속할 백엔드 서버가 있음을 지정하는 access_type = offline과 같은 기타 옵션.

이 단계가 올바르게 작동하는지 확인하기 위해 항상 코드를 실행할 필요는 없습니다. SDK가 제공하는 auth_url을 출력하십시오. 내가 언급 한 모든 매개 변수가 거기에 임베드되어야합니다. 브라우저에 URL을 복사하여 붙여 넣으십시오. 매개 변수가 맞으면 Google의 동의 페이지로 이동합니다. 그렇지 않은 경우 Google Apis 설정 페이지에서 설정 한 매개 변수가 auth_url에서 스크립팅 된 매개 변수와 일치하지 않기 때문일 수 있습니다. 예를 들어 일치하지 않는 도메인 인 redirect_uris, client_ids, client_secrets가 있습니다. 이것이 당신이 받고있는 오류인지 확실하지 않습니다.

매개 변수가 좋은 경우 Google은 사용자가 로그인하고 앱에 대한 YouTube 범위 액세스 ('동의')를 허용합니다. 그것은 매개 변수 code =를 사용하여 사용자의 브라우저를 지정된 'redirect_uri'로 리디렉션합니다. 이렇게하면 서버 스크립트가 처리해야하는 2 단계로 이동합니다.

  1. 매개 변수? 코드에서 Google이 쏜 값은 액세스 토큰을 얻기 위해 필요한 것입니다. 따라서 서버 경로 (redirect_uri)는 '자격 증명'을 교환하기 위해 코드 매개 변수를 추출하고 Google API로 전달해야합니다. 인증 코드는 한 번만 사용할 수 있습니다. 응답 자격 증명에는 access_token 및 refresh_token이 포함됩니다. API 호출에 중요하므로 저장소에 저장해야합니다. 사용중인 Google SDK를 사용하는 것이 좋습니다.

희망이 있습니다.