Вызов realtime.loadAppDataDocument не работает, когда работает realtime.load?

После вызова realtime.loadAppDataDocument я получаю сообщение об ошибке:

XMLHttpRequest cannot load https://drive.google.com/load?
access_token=ya29.AHES6ZRoDqY0PmpHlbUjniB8wIl… Kzw
&id=1xAp1SMlamIfjnUGO9pDwfNF5IphdtnZsCw36KalJss27wy00LJ-rCN9MpcHMx408Xg.
Origin http://localhost:4567 is not allowed by Access-Control-Allow-Origin. 

Однако, если я вызываю realtime.load с идентификатором файла, он работает. См. фрагмент кода ниже

if (fileId === null) {
    // this call fails
    gapi.drive.realtime.loadAppDataDocument(onFileLoaded, initializeStorageModel, handleErrors);  
} else {
    // this call succeeds
    gapi.drive.realtime.load(fileId, onFileLoaded, initializeStorageModel, handleErrors);
}   

Переменные, используемые до этого момента (передаются в Google для токена доступа):

LOAD_APIS = 'auth:client,drive-realtime,drive-share';
SCOPE = [
'https://www.googleapis.com/auth/drive.appdata',
'https://www.googleapis.com/auth/drive.file'
 ];
LOAD_CLIENT_APIS = ['drive', 'v2'];

Кто-нибудь знает, как заставить работать метод realtime.loadAppDataDocument?

Обновление: я думаю, что запрос может на самом деле получать ответ 401 (но поскольку заголовок CORS не отправляется с ответом 401, вызывается ошибка Access-Control-Allow-Origin)


person Jake Bolam    schedule 14.08.2013    source источник
comment
Привет, Джейк. Ты случайно не используешь Safari? Эта функция зависит от перенаправлений, которые, к сожалению, не работают в Safari с CORS XHR (stackoverflow.com/questions/15093281/). На самом деле это та же проблема, которая привела к сбою realtime.load в Safari на прошлой неделе. Нам удалось найти обходной путь для realtime.load, но, к сожалению, у нас нет обходного пути для realtime.loadAppDataDocument. Хорошая новость заключается в том, что у нас есть исправление для этой функции в Safari, которое должно появиться в следующую среду.   -  person Brian Cairns    schedule 14.08.2013
comment
Эй, Брайан, это с Chrome на Mac (и быстрый тест показывает, что Chrome на Windows также не работает). (Я не могу протестировать IE, потому что я еще не использую (SSL))   -  person Jake Bolam    schedule 15.08.2013
comment
401 обычно указывает, что авторизация не удалась, хотя я не уверен, почему вы увидите это для realtime.loadAppDataDocument, но не для realtime.load, если только вы не пропустите область действия drive.appdata (которой вы не являетесь, по крайней мере, согласно коду ). К сожалению, мне не удалось воспроизвести вашу проблему в тестовом приложении. Вы можете поделиться полным кодом?   -  person Brian Cairns    schedule 17.08.2013
comment
Привет, Брайан, я разместил здесь временную упрощенную версию приложения: pacific-plains-7355. .herokuapp.com (игнорируйте ошибки https, а также из-за отсутствия https это не удастся в IE) просто обратите внимание на две ошибки Origin.   -  person Jake Bolam    schedule 20.08.2013
comment
PS: если я удалю drive.appdata из области действия, я получу ответ 403.   -  person Jake Bolam    schedule 20.08.2013
comment
Тестовое приложение у меня загружается корректно. Вчера мы внесли некоторые изменения, которые, возможно, решили вашу проблему. Не могли бы вы попробовать еще раз?   -  person Brian Cairns    schedule 22.08.2013
comment
Брайан, вчерашние изменения исправили проблему!   -  person Jake Bolam    schedule 22.08.2013


Ответы (1)


Google внес некоторые изменения в Realtime API, которые решили проблему.

person Jake Bolam    schedule 22.08.2013