2016-05-21 8 views
0

Ich verwende die Google Drive-API und authentifiziere mich mithilfe des OAuth-Tokens mithilfe des PHP-Programms. Für mein Testprogramm bin ich manuell zur OAuth-URL gegangen und habe ein Token erstellt. Dann habe ich es im Programm verwendet und in der Datei gespeichert. Ab dem nächsten Mal wird das Token aus der Datei geladen und das Programm kann auf Google Drive zugreifen. Da das Token jedoch nur für 1 Stunde gültig ist, erhalte ich den Fehler, da das Token, das es aus der Datei abruft, nicht mehr gültig ist. Ich bin nicht klar, wie ich das Token aktualisieren kann, so dass es nicht erforderlich ist, manuell ein neues Token zu erhalten.Wie aktualisiere ich das OAuth-Token?

Im Anschluss an meinem Code -

$client = new Google_Client(); 
$client->setClientId(CLIENT_ID); 
$client->setClientSecret(CLIENT_SECRET); 
$client->setRedirectUri(REDIRECT_URIS); 
$client->setScopes($SCOPES); 
$client->setAccessType('offline'); 
$client->setAuthConfigFile(CLIENT_SECRET_PATH); 

Wenn die cred-Datei vorhanden ist, ziehe ich das Token aus dieser Datei sonst würde ich es holen werden. manuell Vorerst setze das erste Mal Token I -

if (file_exists(CREDENTIALS_PATH)) { 
    $accessToken = file_get_contents(CREDENTIALS_PATH); 
    } else { 
    $authCode = 'My Auth Code'; 
    $accessToken = $client->authenticate($authCode); 
    } 
    file_put_contents(CREDENTIALS_PATH, $accessToken); 

$client->setAccessToken($accessToken); 

Nun, wenn das Token abgelaufen ist muss ich automatisch das Token aktualisieren.

if ($client->isAccessTokenExpired()) { 
    //This is where I am running in trouble. 
} 

Wie erreiche ich das? Ziel ist die Durchführung der OAuth-Authentifizierung und die Ausführung der Google Drive API ohne manuellen Eingriff.

Vielen Dank für die Hilfe!

Antwort

0

Sieht aus wie ich die Antwort gefunden habe.

Ich verwendete die OAuth-URL zum ersten Mal Zugriff auf den Parameter prompt=consent. Dies erzeugte das Refresh-Token, das in der Datei gespeichert wurde. Danach folgte die Hinzufügung zum Code -

Danach läuft das Token nicht mehr nach einer Stunde ab.

Verwandte Themen