Я пытаюсь создать новую надстройку Gmail с помощью скрипта Google Apps и пытаюсь получить доступ к стороннему API, не относящемуся к Google. Для этого я использую O-Auth 2.0 Implicit Grant-Type для аутентификации.
Вот как выглядит AuthService
:
function getOAuthService() {
return OAuth2.createService('Podio O-Auth')
.setAuthorizationBaseUrl('Base Url')
.setTokenUrl('Token Url')
.setClientId('clientId')
.setClientSecret('clientSecret')
.setParam('redirect_uri', 'https://script.google.com/macros/d/' + scriptID + '/usercallback')
.setScope('GLOBAL')
.setCallbackFunction('authCallback')
.setCache(CacheService.getUserCache())
.setParam('response_type', 'token')
.setParam('response_mode', 'query')
.setParam('state', getStateToken('authCallback')) // function to generate the state token on the fly
.setPropertyStore(PropertiesService.getUserProperties());
}
Скрипт правильно генерирует URL-адрес, который включает мой redirect_uri
Auth принимает запрос, генерирует токен и перенаправляет меня в домен scripts.google.com.
После нажатия scripts.google.com
я перенаправляюсь на URL-адрес, который включает мой личный домен, например
https://script.google.com/a/macros/[custom-domain]/d/[script-id]/usercallback#access_token=[token]&expires_in=7200&token_type=Bearer&state=[state]&id_token=[token]
Что приводит к этой ошибке:
потому что URL-адрес фрагментирован на #
. Если я заменю #
на ?
, он будет работать должным образом.
Кто-нибудь может сказать мне, как я могу исправить эту проблему? Если нет, то должен ли я для этой цели предоставить поток кода авторизации?
Примечание: я использовал setParam('response_type', 'token')
для неявного типа предоставления
OAuth2
библиотеки, которую вы используете. Можно было бы подумать, что если бы скрипт приложений не поддерживал неявное предоставление, библиотекаOAuth2
, написанная для скрипта приложений, аналогичным образом не включала бы неявное предоставление. - person tehhowch   schedule 06.10.2018