ここ数日間は、長時間実行されるリアルタイムアプリで問題が増えています。私は下のステップを歩みました。下部のコードスニペットには、アプリからの追加のデバッグ情報が含まれています。GoogleドライブリアルタイムAPI OAuth2リフレッシュエラー
ページが最初に開くと、OAuthトークンが正常に要求され、リアルタイムのドキュメント[A]が読み込まれます。 50分後(トークンが期限切れになる10分前)、新しいOAuthトークンを正常に再要求します[B]。最初のトークンが期限切れになった後、現在オープンしている接続には401の不正なエラーが発生し、新しいoauthトークン[C]が必要です。これは、[B]からの新しい有効なトークンを使用するように自身を更新する必要があったため、問題のように思えます。
しかし、アプリはこのようなエラーに耐えられるはずです。つまり、doc [D]を閉じてもう一度開いて別の新しいOAuthトークンを取得することで処理されます。残念ながら、この時点では、realtime APIはaccess_token [E]のエラーを無限ループに入れています。
すべてのOAuthトークンは、同じスコープでgapi.auth.authorizeを使用して要求され、setTokenは呼び出されません。以前はsetTokenを使ってみましたが、これはまったく同じ問題を抱えていました。
実際の質問 リアルタイムAPIのOAuthトークンをリフレッシュする正しい方法は何ですか?ドキュメントを閉じて開いたときにドライブAPIの内部で繰り返し失敗することを防ぐにはどうすればよいですか?
[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
ありがとうございます!
を繰り返し、エラーの問題を修正するのに十分でした。早速のご返事ありがとうございます! –