Я пытаюсь подключить API Quickbooks через OAuth. Я добавил библиотеку OAuth 2 в сценарий приложений и развернул веб-приложение. URL-адрес веб-приложения — это то, что я использую в качестве URI при вызове OAuthService, а также настроил его в параметрах URI Quickbooks. Я открываю сайт Quickbooks для авторизации, но затем продолжаю получать ошибки от Google или Intuit.
Код выглядит следующим образом:
function getAuthorizationUrl() {
console.info('getAuthorizationUrl called');
var service = getOAuthService();
if (!service.hasAccess()) {
var authorizationUrl = service.getAuthorizationUrl();
return authorizationUrl;
}
}
function getOAuthService() {
var REDIRECT_URI = 'https://script.google.com/macros/s/[SCRIPT_ID]/usercallback/';
return OAuth2.createService('QuickBooks')
.setAuthorizationBaseUrl('https://appcenter.intuit.com/connect/oauth2')
.setTokenUrl('https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer')
.setClientId(CLIENT_ID)
.setClientSecret(CLIENT_SECRET)
.setRedirectUri(REDIRECT_URI)
.setCallbackFunction('authCallback')
.setPropertyStore(PropertiesService.getUserProperties())
.setScope('com.intuit.quickbooks.accounting')
.setTokenHeaders({
'Content-Type': 'application/x-www-form-urlencoded'
});
}
В настоящее время я получаю эту ошибку, хотя URI одинаковы на обоих концах.
Недопустимое значение параметра запроса redirect_uri. Убедитесь, что это указан в разделе URI перенаправления на вкладке ключей вашего приложения и соответствует это точно. Нажмите здесь, чтобы узнать больше о запросе redirect_uri. параметр.
Любое предложение? Я попробовал все возможные конфигурации URI.
Обновлено:
Решение: используйте OAuth2.getRedirectUri()
@Diego Поверьте мне, я проверил трижды, и URI остались такими же. Сейчас работает использование OAuth2.getRedirectUri()
.
Решение: используйте OAuth2.getRedirectUri()
Пожалуйста, объясните, как и почему, чтобы будущие читатели поняли
Сообщение довольно ясное, поэтому вы можете перепроверить свой URI перенаправления. Библиотека OAuth2 не требует установки URI перенаправления, поскольку он предоставляется автоматически, поэтому вы можете удалить этот вызов set и использовать значение, предоставленное
service.getRedirectUri()
.