2017-05-09 5 views
0

Ich bin neu zu google oauth und openid connect, sagen wir, ich brauche Service-Konto, wo Benutzer Videos in meinem YouTube-Kanal speichern, ich erstellte Dienst wie in docs.aber ich weiß nicht wie wie dieser mein Code erhalten ZugriffstokenWie bekomme ich Zugriff Token von Dienstkonto

$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); 

können sagen, wenn ich file_get_contents($authurl) laufen 401 error bin immer, was Fehler, den ich hier gemacht?

Antwort

0

Sie können zu einigen Begriffen verwirrt sein. Oauth2 fordert einen Benutzer zur Authentifizierung auf und fragt den Benutzer, ob ich auf deine YouTube-Daten zugreifen darf. Der Entwickler erhält ein Aktualisierungstoken, mit dem er ein neues Zugriffstoken abrufen und auf die Daten auf dem YouTube-Kanal des Nutzers zugreifen kann.

Dienstkonten sind vorautorisiert. Ich könnte die E-Mail-Adresse eines Dienstkontos verwenden und ihm die Berechtigung erteilen, auf einen Ordner auf meinem Google Drive-Konto zuzugreifen, den dieser dann lesen und in diesen Ordner schreiben könnte.

Die YouTube-API unterstützt keine Dienstkonten.

Für YouTube müssen Sie Ihren Code authentifizieren, sobald Sie das Aktualisierungstoken selbst gespeichert haben, und dann das Aktualisierungstoken zu Ihrem Code hinzufügen. Wenn ein anderer Nutzer ein Video in Ihr Konto hochladen möchte, verwenden Sie das Aktualisierungstoken, um ein Zugriffstoken zu erhalten und die Datei hochzuladen.

Es ist eine gute Frage hier mit, wie mit der PHP-Client-Bibliothek How to refresh token with Google API client?

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

dank Mann, eine Aktualisierungs-Token zu verwenden ist ther jede Lebenszeit für Aktualisierungs-Token und ist ther ein Grund, warum youtube unterstützt Dienstkonten? –

+0

Refresh Token * sollte * nicht ablaufen, aber sie können Sie im Auge behalten und sich benachrichtigen lassen, wenn dies der Fall ist. Wenn es in sechs Monaten nicht benutzt wird, verfällt es. Abgesehen davon, dass du in Sicherheit sein solltest. – DaImTo

+1

Ok Danke :-) –

Verwandte Themen