能否使用Twitter OAuth对消息签名并支持公开验签?
解答
首先给出明确结论:当前Twitter公开提供的OAuth API目前不支持实现你提出的三项需求。
核心原因如下
- Twitter OAuth流程下发的所有用户凭证都和发起授权的第三方应用强绑定,同一用户给不同应用授予的访问令牌、访问令牌密钥完全独立,不存在跨应用通用的、可被任意授权主体复用的用户签名密钥,直接不满足「身份验证过程不与你的应用绑定」的要求。
- 所有OAuth相关的用户凭证都属于敏感信息,泄露后可被用于操作对应Twitter账号,无法放入公开共享的签名消息中,不符合第二条无敏感信息的要求。
- Twitter官方没有为平台用户分配可公开查询的非对称密钥对,也没有提供公开的签名验证接口,任意第三方无法独立验证某条签名的签署主体为指定ID的Twitter用户,第三条需求也无法满足。
更优替代方案
你可以采用「OAuth授权+公开哈希锚定」的方案替代存个人简介的方案:
- 先通过OAuth流程确认用户对指定Twitter ID的所有权
- 引导用户公开发布一条包含待签名内容哈希值的推文(可设置为非公开状态,只要第三方可通过API查询到对应内容即可)
- 公开的签名消息仅需要包含Twitter用户ID、原始待签名内容、哈希值、对应推文的发布时间戳,无任何敏感信息
- 第三方验证时仅需要核对对应ID的用户发布的推文中是否包含匹配的哈希值,即可确认绑定关系
内容的提问来源于stack exchange,提问作者phaze
相关产品推荐
相关产品推荐

