当前位置: 代码迷 >> 综合 >> EBay 接口开发(restful接口调用)
  详细解决方案

EBay 接口开发(restful接口调用)

热度:3   发布时间:2023-12-13 09:19:19.0

       最近公司需要从eBay拉取数据,踩了很多坑,记录下过程。

       首先,调用eBay接口需要注册eBay的开发者账号。注册地址:https://developer.ebay.com/signin。注册之后大概需要一到两个工作日,eBay那边需要审核,审核通过之后才能登陆。登陆之后需要填写Application Keys及一些其他信息,填好之后就是这个样子。

 当然,你们刚进来肯定不是我这种。生产那边显示密钥已禁用,点击那个什么“市场删除通知”(翻译之后的文字),会跳转到那个删除通知的页面,大概就是这种

选择选择退出 eBay 市场帐户删除/关闭通知,就能启用生产密钥了。具体可参考:https://developer.ebay.com/marketplace-account-deletion,英文可用页面翻译。

       第二步,获取token。先放链接:https://developer.ebay.com/api-docs/static/oauth-tokens.html

 我这边是需要去获取其他账号的数据,所以需要第二种类型token。流程是这样

用白话来说就是:程序拼接授权链接 → 用户点击链接 → 登录账号 → 会出现一个授权页面 → 点击agree → 进行跳转 → eBay会跳转到你设置的回调地址 → 地址上携带参数code → 拿到此code去获取access_token → 调用restful接口需携带access_token

       (1)先去设置一些东西,回调地址啥的

 勾选OAuth,代表新的授权方式,默认的左边的是旧的。restful要采用右边的OAuth。

回调地址会在用户授权之后调用,参数code会有时效,几分钟好像就过期了,要重新授权获取code。回调地址大致长这样:https://xxx.com/ebay/auth/token?code=v%5E1.1%23i%5E1%23f%5E0%23I%xxxxxxxxxxxxxxxxxxxxxxNGQ0Y5N0QyOTM1M0EwNzRfMF8xI0VeMjYw&expires_in=299,所以可以用spring的@RequestParam去接收参数。

       (2)拼接授权地址:https://developer.ebay.com/api-docs/static/oauth-authorization-code-grant.html

client_id=<你的client-id-value>
redirect_uri=<上面配置的那里有,RuName>
response_type=code&
state=<自定义参数>&
scope=<scopeList>&   //上面有scopes,用空格分隔地址,并且用URL对这个参数进行编码
prompt=login

       (3)用户点击授权链接,授权后执行回调。回调方法拿到code,获取token数据,再调用api接口时带上access_token即可。

注:

1、code有效期好像只有1分钟,若报错Invalid value,则可能是code过期;

2、若采用postman调用接口,报错unsupported_grant_type,则有可能是body设置不对,body需设置row选项,且传值格式为grant_type=authorization_code&redirect_uri=……..&code=………. &expires_in=7200;

3、access_token有效期2小时,refresh_token时效大概500多天。access_token过期后可通过refresh_token重新获取,refresh_token过期则需重新授权。

4、使用postman调试接口,scopes需要用空格隔开,并且采用URL编码。Basic 后面需要加上空格,并且对client_id:client_secret进行base64编码。

最后,放上项目demo:https://github.com/songdada1995/ebay-api-demo,有帮助可以点个star。

  相关解决方案