Google Drive Realtime API OAuth2 Грешки при опресняване (част 2)

Това е продължение на Грешки при опресняване OAuth2 API в реално време на Google Диск.

Тъй като актуализацията на API в реално време беше насочена в сряда, виждам някои допълнителни проблеми с опресняването на OAuth токени. След изтичането на токена на OAuth, API в реално време получава грешка 401, както се очаква, и хвърля събитие за грешка в документа. Тази грешка се обработва и приложението изисква нов OAuth токен чрез gapi.auth.authorize, който е успешно зададен в gapi.auth (потвърден чрез getToken). Изглежда обаче, че този токен не се използва от API в реално време, който получава stacuk в състояние на постоянно качване, но не извежда никакви грешки.

>>>> Page Load <<<<
1374822961806 ": GAPI Authorized" 
Object {state: "", access_token: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX_DloepHbGho", token_type: "Bearer", expires_in: "3600", client_id: "XXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com"…}
_aa: "1"
access_token: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX_DloepHbGho"
client_id: "XXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com"
cookie_policy: undefined
expires_at: "1374826561"
expires_in: "3600"
g_user_cookie_policy: undefined
issued_at: "1374822961"
response_type: "token"
scope: Array[2]
state: ""
token_type: "Bearer"

>>>> Document loaded successfully <<<<
Remote Size:  130.24 kB
Remote String Size:  22.01 kB
Final Remote Item Counts:
  Map :  409
  List :  118
  EditableString :  407
Total Inaccessible Items: 8
Total Unused Lists: 14

>>>> Wait for OAuth2 Token Timeout <<<<
GET https://drive.google.com/otservice/bind?id=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX…RID=rpc&SID=XXXXXXXXXXXXXXXXXXXXXXXXXXX&CI=0&AID=206&TYPE=xmlhttp&zx=7cirt7mulog0&t=1 401 (Unauthorized) api:87
Drive Realtime API Error: token_refresh_required: The OAuth token must be refreshed. api:477
Doc Load Error:  Sx {type: "token_refresh_required", message: "The OAuth token must be refreshed.", b: false, isFatal: false}

>>>> Handle Doc Load Error <<<<
1374826571645 ": Refreshing OAuth2 Token: " 
["https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/userinfo.email"]

>>>> Before refreshing call gapi.auth.getToken() <<<<
1374826571646 ": Current Token: " null

>>>> Refresh using gapi.auth.authorize() and do NOT call gapi.auth.setToken() <<<<
1374826571813 ": Refreshed OAuth2 Token: " 
Object {state: "", access_token: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX_qnWk1NXWXHCmi", token_type: "Bearer", expires_in: "3600", client_id: "XXXXXXXXXXXXXXXXXX.apps.googleusercontent.com"…}
_aa: "1"
access_token: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX_qnWk1NXWXHCmi"
client_id: "XXXXXXXXXXXXXXX.apps.googleusercontent.com"
cookie_policy: undefined
expires_at: "1374830171"
expires_in: "3600"
g_user_cookie_policy: undefined
issued_at: "1374826571"
response_type: "token"
scope: Array[2]
state: ""
token_type: "Bearer"

>>>> After refreshing call gapi.auth.getToken() <<<<
1374826571814 ": New Token: " 
Object {state: "", access_token: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX_qnWk1NXWXHCmi", token_type: "Bearer", expires_in: "3600", client_id: "XXXXXXXXXXXXXXXXXX.apps.googleusercontent.com"…}
_aa: "1"
access_token: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX_qnWk1NXWXHCmi"
client_id: "XXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com"
cookie_policy: undefined
expires_at: "1374830171"
expires_in: "3600"
g_user_cookie_policy: undefined
issued_at: "1374826571"
response_type: "token"
scope: Array[2]
state: ""
token_type: "Bearer"

>>>> At this point the document is stuck in isPending and isSaving <<<<
>>>> Modifications to the document don't error but don't persist <<<<

Това известен проблем ли е или има по-добър начин за справяне с този сценарий? От това, което мога да кажа, това е правилният начин за обработка на опресняването на токена въз основа на предишната публикация, свързана в горната част.


person Grant Watters    schedule 27.07.2013    source източник
comment
Здравей Грант. Току-що забелязах проблема ви - съжалявам, че не го видях по-рано. Все още ли имате този проблем или сте намерили решение/поправка?   -  person Brian Cairns    schedule 14.08.2013
comment
Това за щастие беше поправено при едно от вашите натискания през първата седмица на август. Успяхме да се върнем към искане на нов OAuth токен, преди старият да изтече и API в реално време да го вземе правилно. Благодаря за последващите действия!   -  person Grant Watters    schedule 22.08.2013