调用Twitter API获取请求令牌返回错误码32「无法完成身份验证」求助
常见签名生成遗漏项及排查点
- 参数编码规则必须严格遵循RFC 3986
所有参与签名计算的参数值(包括oauth_callback、所有oauth_*前缀参数)都要做百分号编码,空格需编码为%20而非+,所有非字母数字字符都要完成编码。注意参与签名时oauth_callback要使用编码后的值,而非原始未编码的回调地址。 - 签名基串构造不能出错
签名基串由三部分用&拼接而成,顺序不能调整:- 全大写的HTTP请求方法:
request_token接口要求使用POST请求,使用GET请求会直接触发认证错误 - 编码后的接口基础地址:即不带任何查询参数的
https://api.twitter.com/oauth/request_token的编码结果 - 排序后的参数串:把除
oauth_signature外的所有参数(包含查询参数里的oauth_callback和所有oauth_*参数)按参数名的ASCII码升序排序,用key=value格式拼接为字符串后,再对整串做一次RFC 3986编码
- 全大写的HTTP请求方法:
- 签名密钥不能缺字符
第一步获取请求令牌时,HMAC-SHA1签名的密钥格式为编码后的消费者密钥&,即使还没有获取到访问令牌,末尾的&也不能省略,这是高频错误点。 - 签名值放入请求头前需编码
生成的oauth_signature值需要先做RFC 3986编码,再放入Authorization头中。 - 额外权限校验
先确认开发者后台已开启当前App的OAuth 1.0a权限,且配置的回调地址和你传入的oauth_callback完全一致,权限未开也会触发32错误码。
内容的提问来源于stack exchange,提问作者Jessie Liauw A Fong
相关产品推荐
相关产品推荐

