OAuth 1.0中PATCH请求的基础加密字符串正确格式咨询
OAuth 1.0 PATCH 请求的基础加密字符串正确格式
OAuth 1.0 的基础加密字符串(Base String)构造必须严格遵循规则,针对 PATCH 请求的核心要点如下:
核心构造规则
基础字符串由三部分通过 & 连接,每一部分都需要单独进行 RFC 3986 标准的 URL 编码:
- 大写的 HTTP 请求方法:直接使用
PATCH,不能用POST(哪怕部分服务通过_method=PATCH模拟 PATCH,OAuth 签名仍需以实际发送的 HTTP 方法为准) - 编码后的基础请求 URL:仅保留协议、域名、路径部分,去掉所有查询参数(比如
https://api.example.com/api/v2/image编码后为https%3A%2F%2Fapi.example.com%2Fapi%2Fv2%2Fimage) - 编码后的参数串:收集所有请求参数(包括 URL 查询参数、请求体参数、所有
oauth_*参数,但排除oauth_signature),按参数名的 ASCII 字典序排序,键值对用=连接,不同参数用&拼接,最后整体 URL 编码
正确格式示例
假设你的参数包含 oauth_consumer_key=xxx、oauth_nonce=abc、oauth_timestamp=123456,那么基础字符串格式为:
PATCH&https%3A%2F%2Fapi.example.com%2Fapi%2Fv2%2Fimage&oauth_consumer_key%3Dxxx%26oauth_nonce%3Dabc%26oauth_timestamp%3D123456
你之前尝试的格式问题
- 第一种用
POST作为方法:错误,PATCH 请求必须用PATCH作为方法部分 - 第二种保留
_method=PATCH在 URL 中:如果是实际发送 PATCH 请求,不需要这个参数;如果是通过 POST 模拟,那方法应该是POST,但此时要确认服务端的 OAuth 验证逻辑是否认可这种模拟方式 - 第三种 URL 包含多余的
?&:基础 URL 不应保留查询参数的分隔符,需去掉所有查询参数后再编码
内容的提问来源于stack exchange,提问作者Art F
相关产品推荐
相关产品推荐

