我正在尝试使用Google Apps Script和Google Sheets调用StackExchange的API。我无法弄清楚OAuth流程中哪里出了问题。我当前的代码未授予访问权限:
function getStackExchangeService_() {
var CLIENT_ID = PropertiesService.getScriptProperties().getProperty('SE_CLIENT_ID');
var CLIENT_SECRET = PropertiesService.getScriptProperties().getProperty('SE_CLIENT_SECRET');
return OAuth2.createService('StackExchange')
.setAuthorizationBaseUrl('https://stackoverflow.com/oauth')
.setTokenUrl('https://stackoverflow.com/oauth/access_token')
.setClientId(CLIENT_ID)
.setClientSecret(CLIENT_SECRET)
.setCallbackFunction('authCallback')
.setPropertyStore(PropertiesService.getUserProperties())
.setRedirectUri('https://stackexchange.com/oauth/login_success')
.setScope('global');
}
当我调用它并记录响应时,我总是得到"false":
var service = getStackExchangeService_();
Logger.log(service.hasAccess());
感谢您的帮助!
最明显的问题是global
不是有效的堆栈交换范围。
可能使用.setScope('read_inbox');
开始。
此外,请确保:
- 你已注册应用并将其配置为显式(服务器端)OAuth2。(在您的情况下省略端口信息。
- 显然,您应该按照这些说明将
https://script.google.com/macros/d/{SCRIPT ID}/usercallback
用于Application Website
??. - 这意味着您将
script.google.com
用于OAuth Domain
。