Я пытаюсь создать новую надстройку Gmail с помощью Google Apps Script и пытаюсь получить доступ к стороннему 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')
для неявного типа предоставления