OAuth2-Aktualisierungsfehler der Google Drive-Echtzeit-API

In den letzten Tagen habe ich einige zunehmend problematische Probleme mit einer lang laufenden Echtzeit-App gesehen. Ich habe die folgenden Schritte durchlaufen und das Code-Snippet unten enthält zusätzliche Debug-Informationen aus der App.

Beim ersten Öffnen der Seite wird erfolgreich ein OAuth-Token angefordert und das Echtzeitdokument [A] geladen. Nach 50 Minuten (10 Minuten vor Ablauf des Tokens) wird erneut ein neues OAuth-Token erfolgreich angefordert [B]. Nachdem das erste Token abgelaufen ist, erhält die aktuell geöffnete Verbindung einen nicht autorisierten Fehler 401 und erfordert ein neues oauth-Token [C]. Dies scheint an sich ein Problem zu sein, da es sich selbst hätte aktualisieren müssen, um das neue gültige Token von [B] zu verwenden.

Die App sollte jedoch gegenüber Fehlern wie diesem unempfindlich sein. Sie wird also behoben, indem Sie das Dokument [D] schließen und erneut öffnen und ein neues OAuth-Token abrufen. Leider befindet sich die Echtzeit-API zu diesem Zeitpunkt in einer Endlosschleife, in der Fehler für das access_token [E] abgerufen werden.

Alle OAuth-Token werden mit gapi.auth.authorize mit denselben Gültigkeitsbereichen und ohne Aufruf von setToken angefordert. Ich habe zuvor versucht, setToken zu verwenden, aber das hatte genau die gleichen Probleme.

Aktuelle Fragen Wie gehe ich beim Aktualisieren des OAuth-Tokens für die Echtzeit-API vor? Wie kann ich wiederholte interne Fehler in den Laufwerk-APIs beim Schließen und erneuten Öffnen eines Dokuments verhindern?

[A]
_aa: "1"
access_token: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXz9AYBkyympssqI"
client_id: "XXXXXXXXXXXXXXXX.apps.googleusercontent.com"
cookie_policy: undefined
expires_at: "1373610287"
expires_in: "3600"
g_user_cookie_policy: undefined
issued_at: "1373606687"
response_type: "token"
scope: Array[2]
state: ""
token_type: "Bearer"

[B]
_aa: "1"
access_token: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXV2kzG4EMUppi"
client_id: "XXXXXXXXXXXXXX.apps.googleusercontent.com"
cookie_policy: undefined
expires_at: "1373613288"
expires_in: "3600"
g_user_cookie_policy: undefined
issued_at: "1373609688"
response_type: "token"
scope: Array[2]
state: ""
token_type: "Bearer"

[C]
GET https://drive.google.com/otservice/bind?id=1B-XXXXXXXXXXXXXXXXXXXXX_nRizfqmT…&RID=rpc&SID=XXXXXXXXXXXXXXXXX&CI=0&AID=221&TYPE=xmlhttp&zx=ns6e5dr7rf4&t=1 401 (Unauthorized)

Drive Realtime API Error: token_refresh_required: The OAuth token must be refreshed. 

[D]
[Close Realtime Document]
[Open Realtime Document]

_aa: "1"
access_token: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXMHzJXm2dF-"
client_id: "XXXXXXXXXXXXXX.apps.googleusercontent.com"
cookie_policy: undefined
expires_at: "1373613918"
expires_in: "3600"
g_user_cookie_policy: undefined
issued_at: "1373610318"
response_type: "token"
scope: Array[2]
state: ""
token_type: "Bearer"

[E]
[x100] Uncaught TypeError: Cannot read property 'o' of null 

Vielen Dank!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage