2017-05-09 11 views
0

나는 oauthopenid에 접속하지 않으며, 사용자가 내 YouTube 채널에 비디오를 저장하는 서비스 계정이 필요하다고 말하면서 docs.but에 지정된대로 서비스를 만들었습니다. 액세스 토큰이서비스 계정에서 액세스 토큰을 얻는 방법

$param = $this->getParameter('kernel.root_dir').'/xxxx.json'; 
    $client = new \Google_Client(); 
    $client->setClientId('xxxxxxxx'); 
    $client->setScopes('https://www.googleapis.com/auth/youtube'); 
    $client->setRedirectUri('http://localhost:8000/youtube/1/token'); 
    putenv('GOOGLE_APPLICATION_CREDENTIALS='.$param.''); 
    $authurl = $client->createAuthUrl(); 
    $youtube = new \Google_Service_YouTube($client); 
    file_get_contents($authurl); 

처럼 내 코드를 내가 401 error을 얻고있다 file_get_contents($authurl)을 실행, 어떤 실수는 내가 여기에서 말할 수거야?

답변

0

몇 가지 용어로 혼란 스러울 수 있습니다. Oauth2는 사용자에게 사용자의 YouTube 데이터에 액세스 할 수 있는지 묻는 인증 메시지를 표시합니다. 개발자는 새로운 액세스 토큰을 검색하고 사용자 YouTube 채널의 데이터에 액세스 할 수있는 새로 고침 토큰이 제공됩니다.

서비스 계정이 사전 인증되어 있습니다. 서비스 계정 이메일 주소를 사용하여 Google 드라이브 계정의 폴더에 액세스 할 수있는 권한을 부여한 다음 해당 폴더에 읽고 쓸 수 있습니다.

YouTube API는 서비스 계정을 지원하지 않습니다.

YouTube의 경우 새로 고침 토큰을 저장 한 다음 코드에 새로 고침 토큰을 추가하면 코드를 인증해야합니다. 그런 다음 다른 사용자가 비디오를 계정에 업로드하려면 새로 고침 토큰을 사용하여 액세스 토큰을 얻고 파일을 업로드하십시오.

이 좋은 질문은 여기에 PHP 클라이언트 라이브러리 How to refresh token with Google API client?

$client->refreshToken($refreshToken); 
$newtoken=$client->getAccessToken(); 
+0

감사의 남자와 새로 고침 토큰을 사용하는 방법에있다, THER 새로 고침 토큰에 대한 삶의 시간, 아플리케는 유튜브가 지원하지 어떤 이유입니다 서비스 계정? –

+0

새로 고침 토큰 *은 만료되지 않아야하지만 사용자는주의를 기울여야 할 경우 알림을 보내야합니다. 6 개월 이내에 사용되지 않으면 만료됩니다. 그 다음에는 안전해야합니다. – DaImTo

+1

Ok 고맙습니다 :-) –