Das Google YouTube API-Aktualisierungstoken wird nicht gesendet

7

Ich versuche, das Google YouTube-Daten-API mit PHP basierend auf der Google-Dokumentation zu verwenden: Ссылка . Mein Problem tritt bei der Authentifizierung mit OAuth auf. Ich verwende die folgende Autorisierungs-URL, die identisch ist mit der, die die Dokumente sagen, außer für meinen Weiterleitungs-URI und den Anwendungsschlüssel, offensichtlich.

%Vor%

Dann, wie die Dokumente sagen, ich cURL Folgendes:

%Vor%

Allerdings gibt mir meine Antwort nie ein refresh_token, wie es in ihrer Dokumentation steht. Ich bekomme nur die anderen drei Antwortelemente.

Einige Fragen wie diese: Get Refresh Token Google API haben gesagt, zu verwenden approval_prompt = force, aber das funktioniert auch nicht und macht den Zugriff auf access_type = offline komplett unmöglich.

Irgendwelche Ideen, warum ich eine gültige Antwort mit 3 der 4 Antwortelemente bekommen würde?

    
joshholat 26.03.2012, 15:23
quelle

2 Antworten

28

Aus dem Offlinezugriff Teil der OAuth2.0-Dokumentation:

  

Wenn Ihre Anwendung ein Aktualisierungstoken empfängt, ist dies der Fall   wichtig, um dieses Refresh-Token für die zukünftige Verwendung zu speichern. Wenn dein   Anwendung verliert das Refresh-Token, es muss erneut aufgefordert werden, die   Benutzer für die Zustimmung, bevor er ein anderes Aktualisierungstoken erhält. Wenn Sie brauchen   Um den Benutzer erneut zur Zustimmung aufzufordern, geben Sie approval_prompt ein.   Parameter in der Autorisierungscodeanforderung und setzen Sie den Wert auf    force .

Wenn Sie also bereits Zugriff gewährt haben, geben nachfolgende Anforderungen für grant_type von authorization_code nicht die refresh_token zurück, auch wenn access_type in der Abfragezeichenfolge der Zustimmungsseite auf offline festgelegt wurde.

Wie bereits im obigen Zitat angegeben, müssen Sie, um eine neue refresh_token zu erhalten, nachdem Sie bereits eine erhalten haben, Ihren Nutzer durch die Eingabeaufforderung zurücksenden, was Sie tun können, indem Sie% setzen co_de% bis approval_prompt .

Prost,

PS Diese Änderung wurde in einem Blogpost angekündigt auch.

    
bossylobster 19.04.2012 01:22
quelle
2

Sie können google oauth2 playground ausprobieren (https://code.google.com/oauthplayground/) und sehen, welche Unterschiede zwischen Ihren Params und dort bestehen.

    
wanghq 05.04.2012 06:12
quelle