eBay大中华区API开发者平台 开发者专区

搜 索
OAuth快速入门指导 发布时间:2017-04-21

Buy & Sell APIs采用的是Oauth token机制, 与Trading API的token不通用。 使用Buy & Sell API, 需要获取用户的Oauth token。下面详细列出了如何获取用户访问级别的Oauth token (Getting an user access token) 步骤。


首先,你需要知道一些必要的参数:

*client_id         -    App ID (Client ID)
*clientSecret    -    Cert ID (Client Secret)
*redirectUri      -    OAuth Enabled RuName for the clientId

*redirectUrl      -    Auth Accepted URL associated with the redirectUri


以上均可通过开发者账户设置查看:



获取用户OAuth token步骤:

***: 获取用户允许并获取授权代码给应用


https://signin.sandbox.ebay.com/authorize?client_id=<your_client_id>

&redirect_uri=<your_redirect_uri>

&response_type=code

&scope=<URL-encoded-scope-name(s)>



<URL-decoded-auth-code>: 放入URL请求中的scope需要编码处理;多个scope之间以空格隔开。Sell API scope 清单:


https://api.ebay.com/oauth/api_scope
https://api.ebay.com/oauth/api_scope/buy.order.readonly
https://api.ebay.com/oauth/api_scope/buy.guest.order
https://api.ebay.com/oauth/api_scope/sell.marketing.readonly
https://api.ebay.com/oauth/api_scope/sell.marketing
https://api.ebay.com/oauth/api_scope/sell.inventory.readonly
https://api.ebay.com/oauth/api_scope/sell.inventory
https://api.ebay.com/oauth/api_scope/sell.account.readonly
https://api.ebay.com/oauth/api_scope/sell.account
https://api.ebay.com/oauth/api_scope/sell.fulfillment.readonly
https://api.ebay.com/oauth/api_scope/sell.fulfillment
https://api.ebay.com/oauth/api_scope/sell.analytics.readonly


授权代码的生命周期只有5分钟,5分钟以后需重新获取用户授权。

第二步: 用授权代码交换用户token (User Token)和更新token (refresh_token)

POST /identity/v1/oauth2/token HTTP/1.1
Host: api.sandbox.ebay.com
Authorization: Basic <B64-encoded-oauth-credentials>
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&code=<URL-decoded-auth-code>&redirect_uri=<your_redirect_uri>


<URL-decoded-auth-code>: ******获取到的授权代码。
比如说,你可以使用网站 http://meyerweb.com/eric/tools/dencoder/ ***。一个URL-decoded-auth-code示例:  v^1.1#i^1#r^1#p^3#I^3#f^0#t^Ul4xXzE0QzJGQ0I2RDA2NENDMUY4MDkwRjQ3NDE3MzdENzU2XzJfMSNFXjEyODQ=

<B64-encoded-oauth-credentials>: 格式是  <your_client_id>:<your_client_secret>  ,需64位编码。
比如说,你可以使用网站 https://www.base64encode.org/ 进行编码。

一个成功的回复包括  access_token, expires_in,refresh_token and refresh_token_expires_in 

{
 "access_token": "v^1.1#i^1#r^0#I^3#p^3#...AAAOVXe2xTVRhf121kjo0YUGDxUS5v5LbnPnrbe0Mr3YO0uE",
"token_type": "User Access Token",
"expires_in": 7200,
"refresh_token": "v^1.1#i^1#p^3#f^0#I^3#r^1#t^Ul4yX0Y0OUY1RjRENTU2NDZENTBFQ0E4ODg3MzE2Q0RFQj
M2XzdfMSNFXjI2MA==",
   "refresh_token_expires_in": 47304000


其中access_token是用来执行API 调用的token,时效非常有限。 refresh_token是用来重新获取用户token的更新token,需保存管理。

第三步:当access_token过期之后,使用第二步中获取的 refresh_token来生成一个新的token

HTTP headers:
   Content-Type = application/x-www-form-urlencoded
   Authorization = Basic <B64-encoded-oauth-credentials>
 Request body:
   grant_type=refresh_token&refresh_token=<refresh_token value obtained in the step 2>&scope=<URL-encoded-scope-name(s)>

请注意,这里的 scope需与***使用的scope一致。

POST /identity/v1/oauth2/token HTTP/1.1
Host: api.sandbox.ebay.com
Authorization: Basic <B64-encoded-oauth-credentials>
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token
&refresh_token=v^1.1#i^1#p^3#f^0#I^3#r^1#t^Ul4yX0Y0OUY1RjRENTU2NDZENTBFQ0E4ODg3MzE2Q0RFQj
M2XzdfMSNFXjI2MA==
&scope=https%3A%2F%2Fapi.ebay.com%2Foauth%2Fscope%2Fsell%40user 

一个成功的回复类似:
{
    "access_token": "v^1.1#i ... AjRV4yNjA=",
    "token_type":"User Access Token",
    "expires_in": 7200,
    "refresh_token": "N/A"
}

有问题请联系我们: DL-eBay-CBT-API@ebay.com。


成为eBay开发者

  • 大的电子商务技术平台
  • 丰富的编程接口和工具
  • 支持你所熟悉的开发语言
立即注册