Google Drive Realtime API OAuth2 Ошибки обновления

За последние пару дней я столкнулся с рядом проблем, связанных с долго работающим приложением реального времени. Я прошел через шаги ниже, и фрагмент кода внизу содержит дополнительную информацию отладки из приложения.

Когда страница открывается впервые, она успешно запрашивает токен OAuth и загружает документ в реальном времени [A]. Через 50 минут (10 минут до истечения срока действия токена) он успешно повторно запрашивает новый токен OAuth [B]. После истечения срока действия первого токена текущее открытое соединение получает 401 несанкционированную ошибку и требует новый токен oauth [C]. Это само по себе кажется проблемой, так как он должен был обновиться, чтобы использовать новый действительный токен из [B].

Однако приложение все еще должно быть устойчивым к возникновению ошибки, подобной этой, поэтому она обрабатывается закрытием и повторным открытием документа [D] и получением еще одного нового токена OAuth. К сожалению, на данный момент API реального времени находится в бесконечном цикле, получая ошибки для access_token [E].

Все токены OAuth запрашиваются с использованием gapi.auth.authorize с одинаковыми областями действия и без вызова setToken. Ранее я пытался использовать setToken, но у меня были точно такие же проблемы.

Актуальные вопросы Как правильно обновлять токен OAuth для API реального времени? Как можно предотвратить повторяющиеся сбои внутри 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 

Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос