2017-05-01 2 views
0

Ich bin in der Lage, das Beispiel Java-Programm zu verwenden, um Video zu YouTube mit API V3 hochladen.Access Token ist immer abgelaufen in 1 Stunde mit YouTube API V3 für Java

Das von oAuth2 generierte Zugriffstoken ist jedoch immer nach einer Stunde abgelaufen. Wie aktualisiert man das Zugriffstoken mit der Java-Bibliothek, so dass es nie abgelaufen ist?

Java Version of YouTube Upload Sample Program

+0

Sie müssen ein 'refresh_token' erhalten Ich bin mir nicht sicher, wie ich dies über Java tun soll. Hier finden Sie die Dokumentation: https://developers.google.com/youtube/v3/guides/authentication – ConorReidd

Antwort

0

hatte ich die gleiche Sache zu tun (aber mit C# .net). Mit der API konnte ich kein Aktualisierungstoken erhalten.

So habe ich ein Httpclient Youtube API über HTTP API anfordern:

  1. Auf Anfrage der Benutzer zu Google OAuth Server
  2. Google OAuth-Server geben einen Code
  3. Sie senden eine POST zu umleiten Google OAuth mit dieser Code
  4. Google OAuth-Server geben Ihnen einen access_token und refresh_token

An diesem Punkt habe ich eine Auffrischung und ein Zugriffstoken für den Benutzer. Danach verwende ich die API das Token zu aktualisieren (falls erforderlich) und Anforderung an Youtube zu machen.

Ich empfehle Google Playground Sie machen Ihre HTTP-Anfragen zu helfen.

0

fand schließlich eine Java Update für API V3 YouTube. Im ursprünglichen Java-Beispielprogramm sind Änderungen in Auth.java erforderlich. Original ist:

GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
     HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, scopes).setCredentialDataStore(datastore) 
     .build(); 

Und wir brauchen noch zwei weitere Dinge hinzufügen:

  1. setAccessType ("offline")
  2. setApprovalPrompt ("force")

dies jetzt So funktioniert Aktualisierungs-Token zu erhalten.

GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
     HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, scopes).setAccessType("offline").setApprovalPrompt("force").setCredentialDataStore(datastore) 
     .build(); 

Jetzt credential.getRefreshToken() wird ein Token zurückgeben statt null. Und credential.refreshToken() wird return true statt falsch.

Verwandte Themen