贝宝休息访问令牌调用的主体是啥格式和内容类型?

Posted

技术标签:

【中文标题】贝宝休息访问令牌调用的主体是啥格式和内容类型?【英文标题】:What format and content-type is the body of a paypal rest access token call?贝宝休息访问令牌调用的主体是什么格式和内容类型? 【发布时间】:2013-06-22 11:15:12 【问题描述】:

我正在使用带有 Jersey 2.0 客户端的 Java 对 paypal REST API 进行 REST 调用。根据 API 文档,我应该使用 Accept: application/json 和 Accept-Language: en_US 发帖到:https://api.sandbox.paypal.com/v1/oauth2/token。它还表明我应该传入 body grant_type=client_credentials。我做了所有这些,但我不断收到 406 或 415。我无法弄清楚 post call 的 Content-Type 应该是什么?我尝试过 text/plain、text/html、application/json、form-url-encoded.. 似乎没有什么能让我找回令牌。不知道为什么他们的 API 文档编写者没有在文档中包含有效负载的 Content-Type 和格式。有人知道帖子正文的 Content-Type 应该是什么吗?

我想补充一点,当我执行除 form-url-encoded 之外的任何 Content-Type 时,我会返回 415,这意味着媒体类型不被接受,但是当我使用 form-url-encoded 传递任何内容时,我拿回406,基本告诉我身体不行了。

谢谢。

【问题讨论】:

您确定您的请求正文正确且格式正确吗? 嗨,我确信媒体类型应该是 form_url_encoded 并且从我的示例中,这就是我要传递的内容。我能想到的唯一其他问题可能是我没有正确使用 SSL.. url 是 https,但我没有在客户端使用 SSL.. 不确定沙箱是否需要 SSL 来处理实际请求。接下来我会尝试使用它。 【参考方案1】:

感谢您提出问题。

/token 调用最近发生了变化,访问令牌的请求需要将 content-type 设置为 application/x-www-form-urlencoded。这是在 cURL 调用中默认完成的。

包含相关说明的更新文档很快就会发布。

【讨论】:

【参考方案2】:

入站 OAuth 2 端点只接受“application/x-www-form-urlencoded”,否则会抛出 415,然后需要对有效负载进行正确的 url 编码。同样接受头需要包含“application/json”,否则服务将抛出 406。

例如:

标题: 授权:基本 [base64 编码] 内容类型:application/x-www-form-urlencoded 接受:应用程序/json

有效负载示例: grant_type=client_credentials&response_type=token

【讨论】:

以上是关于贝宝休息访问令牌调用的主体是啥格式和内容类型?的主要内容,如果未能解决你的问题,请参考以下文章

PHP |贝宝休息 API | java.lang.NullPointerException

调用rest服务时,soap服务中的请求格式确定失败

Node.js 贝宝休息 sdk

Quarkus 找不到内容类型多部分/表单数据休息客户端的编写器

如何从贝宝配置文件中获取访问令牌

c语言中形参和实参的区别是啥?