Все URL-адреса в функции getOAuthService()
должны быть исходными URL-адресами Google в примере:
// Set the endpoint URLs, which are the same for all Google services.
.setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth')
.setTokenUrl('https://accounts.google.com/o/oauth2/token')
и
// Set the scopes to request (space-separated for Google services).
.setScope('https://www.googleapis.com/auth/drive')
Может быть возможно изменить последний, но только путь, а не домен, и вы должны посмотреть в API, если и как это настраивается. Также этот параметр области видимости отличается в вашем примере, но я не знаю, можно ли принять «1».
Ваше собственное приложение получает обратную связь, если доступ предоставлен, но не участвует в проверке подлинности. Поэтому вам также необходимо получить токен доступа, я вижу его в вашем коде: var accessToken = service.getAccessToken();
, в примере он выглядит немного иначе:
function makeRequest() {
var driveService = getDriveService();
var response = UrlFetchApp.fetch('https://www.googleapis.com/drive/v2/files?maxResults=10', {
headers: {
Authorization: 'Bearer ' + driveService.getAccessToken()
}
});
// ...
}
см. В строке с Authorization: 'Bearer ' + driveService.getAccessToken()
.
Ваш собственный сервер не сконфигурирован (и не должен) обрабатывать запросы аутентификации и поэтому выдает ошибку 400 . API построен для использования Javascript на стороне клиента, поэтому я не советую использовать его для аутентификации на собственном сервере. Тем не менее ниже я перечислил API для использования на вашем собственном сервере.
Использование собственного сервера для аутентификации
Если вы отклоните мой совет использовать google-серверы для аутентификации, то масштаб проблем с тегами будет увеличиваться, как для языков конфигурации сервера (apache, nginx, ...) и языков программирования на стороне сервера (PHP, Python, ...) может быть вовлечено.
Затем вы должны отладить заголовки, что именно отправляется на сервер и почему сервер не может это обработать. Вы можете отладить запрос и ответ в инструменте разработчика браузера (сетевая панель) и проверить файлы ошибок сервера.
Сервер должен самостоятельно приобрести google-сервис и делать то, что будет сделано во внешнем интерфейсе, только с помощью javascript, если вы будете следовать примеру , который вы указали в своем коде .
В этом примере выполняются три запроса к серверу:
- один для аутентификации
- один, чтобы получить токен аутентификации
- один, чтобы получить защищенную услугу
Вы должны помнить, что все три шага должны быть выполнены вашим собственным сервером, и что ваш сервер должен иметь возможность отвечать на все три типа запросов.
Важным вопросом может быть то, какой из трех запросов вызывает ошибку?
Затем вам следует расширить свой вопрос подробными проблемами, которые вы обнаружите в связи с вашим сервером.
API и примеры для OAuth-аутентификации на стороне сервера
PHP: https://developers.google.com/api-client-library/php/auth/web-app
Python: https://developers.google.com/api-client-library/python/auth/web-app
Рубин: https://developers.google.com/api-client-library/ruby/auth/web-app
NodeJs: https://developers.google.com/apps-script/api/quickstart/nodejs
Ява: https://developers.google.com/api-client-library/java/google-oauth-java-client/
Go: https://github.com/googleapis/google-api-go-client
.NET: https://developers.google.com/api-client-library/dotnet/apis/oauth2/v2