Google Apps Script对接Trello API OAuth1出现Invalid Signature错误求助
Trello GAS OAuth1 无效签名错误解决方案
- 修正授权URL与scope配置
你当前将scope=read,write直接拼接在authorizationUrl末尾是错误的,OAuth1签名计算会自动包含所有请求参数,手动拼接会导致签名校验失败。需要删除URL后的scope参数,使用库的setScope()方法单独配置权限。 - 修改参数传递位置
将paramLocation_从auth-header改为query-string,Trello OAuth1接口对请求头的OAuth参数兼容性较差,使用查询字符串传递参数可避免签名校验错误。 - 修正请求方法配置
删除method_=get的配置,获取请求令牌、访问令牌的接口默认使用POST方法,手动指定GET方法会导致签名计算时的HTTP方法与实际请求不一致,触发签名错误。 - 移除手动填写的scriptId配置
OAuth1库会自动获取当前脚本的ID生成回调地址,手动填写错误的scriptId会导致回调地址与Trello开发者后台配置的地址不匹配,触发签名错误。
正确的服务配置参考代码:
function getTrelloService() { return OAuth1.createService('trello') .setConsumerKey('你的Consumer Key') .setConsumerSecret('你的Consumer Secret') .setRequestTokenUrl('https://trello.com/1/OAuthGetRequestToken') .setAccessTokenUrl('https://trello.com/1/OAuthGetAccessToken') .setAuthorizationUrl('https://trello.com/1/OAuthAuthorizeToken') .setScope('read,write') .setCallbackFunction('authCallback_Trello') .setPropertyStore(PropertiesService.getScriptProperties()) .setSignatureMethod('HMAC-SHA1') .setOAuthVersion('1.0a') .setParamLocation('query-string'); }
- 清理历史失效凭据
首次运行新配置前,先执行以下代码清理之前存储的错误凭据,避免缓存的无效数据影响认证:
function resetTrelloAuth() { getTrelloService().reset(); }
- 附件下载注意事项
完成认证后,下载附件时必须使用getTrelloService().fetch(附件URL)发起请求,不要直接调用UrlFetchApp.fetch,否则不会自动携带OAuth1参数,导致下载失败。
内容的提问来源于stack exchange,提问作者Thor Jensen
相关产品推荐
相关产品推荐

