2016-05-03 6 views
0

Grundsätzlich ist mein Ziel, ein Formular zu erstellen, das es jedem Besucher meiner Website erlaubt, ein Video im Kommentarbereich zu meinem EIGENEN Kanal hochzuladen. Momentan verwende ich die YouTube OAuth Version 3 API dafür. Das Problem ist alle 3600 Sekunden, der Code von YouTube ist abgelaufen und wir werden zu Google OAuth weitergeleitet, das um Erlaubnis bittet (Beispiel: https://accounts.google.com/o/oauth2/auth?client_id=805j8tubb260venakqj8jq3f6hl9eluu.apps.googleusercontent.com). Und wir müssen jedes Mal, wenn die Schaltfläche abläuft, manuell auf die Schaltfläche "Zulassen" klicken.Youtube oAuth 2.0 API permanenter Code zum Abrufen von Tokens

So ist es möglich, den Zugriff einmal zu erlauben, und dann brauchen wir den Code nicht erneut zu nehmen, um dem Webseitenbesucher die Upload-Erlaubnis zu geben?

Antwort

1

Versuchen Sie zu überprüfen, ob Sie die Schritte/Prozess hier in diesem documentation folgen.

1. Registrieren Sie Ihre Anwendung als installierte Anwendung

2. Antrag ein Zugriffstoken

3. Einwilligung des Nutzers Entscheidung

  • In diesem Schritt wird der Benutzer entscheidet, ob Sie Ihrer Anwendung die Möglichkeit einräumen, API-Anfragen zu stellen, die als Benutzer autorisiert sind. Der Autorisierungsserver von Google zeigt den Namen Ihrer Anwendung und die Google API-Dienste an, für die sie Zugriffsberechtigung mit den Autorisierungsdaten des Benutzers beantragt. Der Benutzer kann dann zustimmen oder den Zugriff auf Ihre Anwendung verweigern.

4. Handle Antwort von Google

5. Exchange-Autorisierungscode für Aktualisierungen und Zugriffstoken

6. Prozess Antwort und speichern Token

Hier Google reagiert auf Ihre POST-Anforderung, indem ein JSON-Objekt zurückgegeben wird, das ein kurzlebiges Zugriffstoken und ein Aktualisierungstoken enthält.

{ 
    "access_token" : "ya29.AHES6ZTtm7SuokEB-RGtbBty9IIlNiP9-eNMMQKtXdMP3sfjL1Fc", 
    "token_type" : "Bearer", 
    "expires_in" : 3600, 
    "refresh_token" : "1/HKSmLFXzqP0leUihZp2xUt3-5wkU7Gmu2Os_eBnzw74" 
} 

Hinweis: Ihre Anwendung sollte beiden Werte in einem sicheren Speicherung, langlebiges Lage, die zwischen verschiedenen Anrufungen Ihrer Anwendung zugänglich ist. Das Aktualisierungstoken ermöglicht Ihrer Anwendung, ein neues Zugriffstoken zu zu erhalten, wenn das Sie abgelaufen sind. Als solche Wenn Ihre Anwendung das Aktualisierungstoken verliert, muss der Benutzer den OAuth 2.0-Zustimmungsfluss wiederholen, damit Ihre Anwendung ein neues Aktualisierungstoken erhalten kann.

Zugriffstoken regelmäßig ablaufen, so dass es aktualisiert werden müssen. Wenn ein Zugriffstoken abläuft, kann Ihre Anwendung möglicherweise ein Aktualisierungstoken verwenden, um ein neues gültiges Zugriffstoken zu erhalten. Server-seitige Webanwendungen, installierte Anwendungen und Geräte erhalten alle Aktualisierungstokens während des Autorisierungsprozesses.

Beachten Sie, dass tokens might stop, no longer work or expire wenn:

  • Der Benutzer Zugriff widerrufen hat.

  • Das Token wurde seit sechs Monaten nicht mehr verwendet.

  • Das Benutzerkonto hat eine bestimmte Anzahl von Token-Anfragen überschritten.

+0

Hallo, danke für deine Antwort ken. Aber eigentlich ist das Problem, ich will nicht jede Stunde meine Zustimmung für meine Website geben. In meinem Fall können die Besucher ihr Video hochladen und es in meinen Kanal einfügen. Es wäre also ein Problem, jede Stunde eine Aktualisierung zu verlangen. –

+0

Ich benutze die Google .NET API für meine ähnliche Anwendung und die Aktualisierung wird automatisch durchgeführt. –

+0

@MikeMeinz Hallo Mike. Ist es auch möglich, dass PHP ein automatisches Refresh-Token erhält? Hast du eine Idee, wie die Logik funktioniert? –

0

Sie sollten Kendi Anweisungen folgen, wie das Token zu bekommen - er ziemlich viel es direkt aus der Dokumentation gezogen. Aber Sie sollten das nur einmal tun müssen. Der Trick besteht darin, das refresh_token irgendwo zu speichern und dann zu verwenden, um ein neues Zugriffs-Token zu erhalten, bevor Sie ein Video hochladen möchten. Hier ist meine schnelle und schmutzige NodeJS-Lösung:

function getAccessToken() { 
    const options = { 
    method: 'POST', 
    uri: 'https://accounts.google.com/o/oauth2/token', 
    form: { 
     client_id: 'YOUR_CLIENT_ID', 
     client_secret: 'YOUR_CLIENT_SECRET', 
     refresh_token: 'YOUR_REFRESH_TOKEN', 
     grant_type: 'refresh_token' 
     } 
    } 

    return request(options) 
     .then(body => JSON.parse(body)); 
} 

getAccessToken.then((token) => uploadSomeYoutubeVideo());