我刚刚开始熟悉 eBay RESTful API,请原谅我这个基本问题,但我还没有找到答案。
我多年前就有一个 eBay 帐户。我最近注册了一个开发者帐户(相同的电子邮件地址),并获得了沙盒和生产的令牌。我已成功使用公共 API(如列表项、搜索项等)通过查询 eBay 中的某些项来验证令牌。
如何从此处继续访问特定于我的 eBay 帐户的数据,例如购买和销售列表?我想,我需要以某种方式将我的应用程序连接到我的实时 eBay 帐户,并授予我的应用程序读取数据的权限,但我在 eBay 帐户设置和 API 调用中都找不到任何匹配的设置。
请指导我完成下一步:如何为我的应用程序提供所需的权限,以及如何构建一个简单的只读查询来查询,例如,我已购买的商品。
我认为这个问题不依赖于任何编程语言,随意使用你喜欢的任何编程语言。
好吧,如果我们只讨论授权令牌并调用类似订单的卖家 api(我相信在 eBay 中这称为履行)。
我们需要从创建用户令牌开始。
然后您需要添加 eBay 重定向 URL:
我对 Auth'n'Auth 了解不多,所以我只讨论 OAuth
添加新的重定向 URL 后,您应该添加授权成功和失败的 url 地址。 授权后您将被重定向到那里。
现在我们可以测试代币的生成是否有效。
对于这个例子,我确实设置了这样的重定向网址:
我们需要单击“测试登录”(之前将单选按钮设置为OAuth) 您应该被重定向到网站:
您需要使用有权访问 sandbox.ebay.com 或 ebay.com 的帐户登录(取决于您是在沙箱还是生产环境中)
登录后我不记得是否会有另一个窗口确认应用程序范围以进行确认(我之前已经做过)。 但如果是这种情况,只需单击确认按钮即可。
现在您应该被重定向到 https://localhost.com,我们已将其设置为成功重定向网址
网址应该是这样的
https://localhost.com/?code=v%5E1.1%0VeMTI%3D%3D&expires_in=299
那个
code
参数要长得多。 而且你可以看到它是url编码的所以你需要在使用之前解码它
现在你就快到家了 :D
您有 300 秒的时间来调用 POST 请求以使用该代码参数进行授权。
POST https://api.sandbox.ebay.com/identity/v1/oauth2/token
需要标题
还记得第一个屏幕截图吗?
您需要去那里获取您的应用程序 ID、证书 ID,然后将其与“:”连接,然后将其编码为 Base64 并在该值之前添加“Basic”关键字。
在伪代码中它应该看起来像这样:
Authorization:Basic Base64.encode(AppID + ":" + CertID)
需要身材
Body 的格式需要是“x-www-form-urlencoded”(基本上是 key:value 格式)
这里有你需要的
grant_type:authorization_code
code:{code}
redirect_uri:{redirect_name}
{code} - 是来自成功授权 url 的值 {redirect_name} - 您可以在下面标有红色圆圈的屏幕上找到它
如果你做的一切正确,你应该得到 eBay 的回复
{
"access_token": "v^1.1#i^1#r^0VbbxW1wjv4HZGAAA",
"expires_in": 7200,
"refresh_token": "v^1.1#i^1#f^0#r^FDQ=",
"refresh_token_expires_in": 47304000,
"token_type": "User Access Token"
}
您应该保存该数据,access_token用于访问数据,refresh_token用于刷新access_token。
使用 authToken 的示例请求
GET https://api.sandbox.ebay.com/sell/fulfillment/v1/order?filter=creationdate:[2022-03-31T08:25:43.511Z..]
You need Authroization header:
Authorization:Bearer v^1.1#i^1#r^0VbbxW1wjv4HZGAAA
我想就是这样。要将其实现到您的应用程序中,您需要能够生成单击“测试登录”后重定向到的第一个网址,基本上就是这样。
顺便说一句,你像这样刷新令牌
发布https://api.sandbox.ebay.com/identity/v1/oauth2/token
正文 x-www-form-urlencoded
grant_type:refresh_token
刷新令牌:v^1.1#i^1#f^0#r^FDQ=
标题
Authorization:Basic Base64.encode(AppID + ":" + CertID)
我希望这会对某人有所帮助。 :)