Получение отказа от сервера при отправке с помощью Google Picker, Oauth2
Мы пытаемся использовать google.picker
, чтобы наши пользователи загружали файлы в нашу учетную запись диска (т.е. пользователю не требуется иметь учетную запись Google для загрузки).
Мы пытаемся использовать обычные учетные записи Google в качестве учетных записей, принадлежащих приложениям, и получили наш AUTH_TOKEN
с помощью OAuth2 и установили его с помощью .setOAuthToken(AUTH_TOKEN)
. Мы следовали всему, что описано в docs.
Однако при загрузке мы получили ошибку Server Rejected
. Вызов https://docs.google.com/upload/resumableupload?authuser=undefined
:
{ "ErrorMessage": { "причина": "REQUEST_REJECTED", "additionalInfo": { "uploader_service.GoogleRupioAdditionalInfo": { "completionInfo": { "Статус": "REJECTED" }, "requestRejectedInfo": { "reasonDescription": "agent_rejected" }}}, "upload_id": "AEnB2Ur64Gb0JDCk_8mg5EhpdcaqL82wBQHumHjcGvDqYibtksmUzhfhBolsmBFzRuvQPRyi43SYfactJZvIWYrQ6xAqzu3L9g" }}
Мы знаем, что мы не можем использовать учетные записи служб, поскольку сборщик не поддерживает его.
Мы пропустили что-то в получении AUTH_TOKEN
? Нужно ли что-то в консоли?
Ответы
Ответ 1
Дайте нам немного больше кода или проверьте звонок на gapi.auth.authorize()
- Убедитесь, что вы используете правильную область для получения токена OAuth.
- Дважды проверьте объявление области видимости:
-
Проверьте вызов gapi.auth.authorize()
window.gapi.auth.authorize(
{
'client_id': clientId,
'scope': scope,
'immediate': false
},
handleAuthResult);
from: https://developers.google.com/picker/docs/#hiworld
Без фактического кода кода очень сложно точно сказать, что происходит. Скорее всего, это токены. Однако это может быть и так просто, как не определять пользователя Google (clientID), который, в свою очередь, влияет на вызов gapi.auth.authorize()
.
Ответ 2
Возможно, этот поток может вам помочь: https://groups.google.com/forum/#!topic/Google-Picker-API/PPd0GEESO78
Речь идет о настройке контекста oauth
или этот:
https://productforums.google.com/forum/#!msg/drive/GDl4uBkkbxM/jRejcxI-EV8J
Речь идет о типе файла, который вы пытаетесь загрузить с помощью autoconvert.
Ответ 3
Используйте Google Apps script на Диске с функцией doPost для отправки данных на сервер. Затем напишите в файл с помощью API-интерфейса накопителя. При публикации вы должны установить разрешения "доступным для любого, даже автономного", если выполняете междоменные вызовы. Сделайте script запустимым под своим именем пользователя в Google (для тестирования), но, скорее всего, вы захотите, чтобы эта функция переместилась на некоторую учетную запись пользователя приложения в Gmail.
Если вам нужен уровень аутентификации, даже если публикация script станет общедоступной, вы можете пройти аутентификацию против размещенной базы данных CloudSQL и/или библиотеки Jdbc для подключения к внешнему ресурсу.
Ответ 4
Сфера видимости является проблемой. Точный токен должен быть получен только с использованием правильной области:
http://tinyurl.com/ldotq4y
Ответ 5
Легко замените scope: 'https://www.googleapis.com/auth/drive.readonly'
на scope: 'https://www.googleapis.com/auth/drive'
. Чтобы вы могли внести изменения, в том числе загрузить что-то в свой аккаунт Google Диска.
Ответ 6
Я только что столкнулся с той же проблемой, и на самом деле проблема в проблеме. Тем не менее, ни один из ответов, которые я нашел, не мог сказать мне, в чем заключалась проблема, пока я сам не нашел его. В моем случае мне нужно было убедиться, что область была указана на экране OAuth Consent в разделе Credentials проекта:
![enter image description here]()