eBay用户授权流程

ebay-developer
往下翻,点击Customize the eBay User Consent Form,找到Manage Your RuNames部分,然后点击Generate Runame,这样就会产生一个所谓的RuName,长成这个样子”vfeelit-vfeelit1d-65eb–tboemfhvb”,可以点击多次产生多个RuName,不过看起来没有什么必要,那么RuName是什么毛呢,先看看针对它的配置吧,在对应字符串右边点击Show Details,将展示如下表单:
eBay RuName
Display Title和Display Description是展示给用户看的标题和描述,这个信息可以在Application Level Settings中设置Show Application Details为enabled或disabled来设置,还可以上传Logo,这些信息是在用户点击同意授权时展示的出来给用户看的。

Token Return Method设置如何获取Token,Authorization Type为授权类型,Accept Redirect URL为成功授权后跳转到的地址,Reject Redirect URL授权被拒绝时跳转到的地址。实际上这里的值只要默认就可以了,关于Accept Redirect URL和Reject Redirect URL如果要设置,必须是HTTPS的链接地址,实际设置这两个变量毫无意义,因为它不会回传任何信息到这两个URL。所以,RuName实际上是一个Application的标识符(别名),它设置了相关的认证类型,Token获取方式等等,比如当用户授权成功后,就需要用这里设置的Token Return Method来获取Token。

对于一个应用,只要设置一个RuName即可。多个RuName也支持。这个步骤完成后应用就支持多用户授权了。

授权过程,步骤如下:
1 调用GetSessionID获取一个SessionID
这个API调用详细参考:http://developer.ebay.com/Devzone/XML/docs/Reference/ebay/GetSessionID.html,这里面如果是发送XML,只要发送RuName即可:

<?xml version="1.0" encoding="utf-8"?>
<GetSessionIDRequest xmlns="urn:ebay:apis:eBLBaseComponents">
  <!-- Call-specific Input Fields -->
  <RuName> string </RuName>
  <!-- Standard Input Fields -->
  <ErrorLanguage> string </ErrorLanguage>
  <MessageID> string </MessageID>
  <Version> string </Version>
  <WarningLevel> WarningLevelCodeType </WarningLevel>
</GetSessionIDRequest>

从返回提取SessionID即可。

2 用获取到的SessionID构建URL
URL格式:https://signin.ebay.com/ws/eBayISAPI.dll?SignIn&RUName=RUName&SessID=SessionID,SessionID需要经过URL-encoded,然后定位到这个URL,这样将打开用户登录表单,用户登录成功后将跳到一个是否同意授权的页面:
eBay 用户登录
登录后跳到:
授权应用
这个的Grant application access后的名称就是设置RuName是指定的Display Title,这就说明RuName可以看做是Application。最下面展示的是应用的信息,这个可以在开发者账户中进行设置。点击I agree跳转到如下页:
ebay_auth_success
这个也是可以设置的。前面已经论述。这里叫你去关闭这个页。TMD,这就完了,然后接下来要发起获取Token的操作,这个过程明显让我们感觉整个流程被中断了。我们观察一下这个返回的URL:https://signin.ebay.com/ws/eBayISAPI.dll?ThirdPartyAuthSucessFailure&isAuthSuccessful=true&ebaytkn=&tknexp=1970-01-01+00%3A00%3A00&username=testuser_vfeelit,问号之前的是可以设置的(需要HTTPS),后面的数据是固定的,isAuthSuccessful参数表明是否成功,username指出了eBay用户名,应该只要设置一下应用的返回地址,根据这些参数,也是可以自动获取Token的(流程不中断,因为获取到了username)

3 获取Token
以上两个步骤完成后,只是说明用户对应用进行了授权,但是授权码应用程序还没有获取到,这个时候调用FetchToken(传递eBay ID),就能返回针对这个账户的Token。

4 保存这个Token和有效时间
Token保存起来后就可以使用这个Token来访问API操作对应账户数据了。

这个过程看起来并没有比oAuth 2先进多少,这个流程过程中的中断让人产生困惑,虽然可以设置Accept Redirect URL,但是它要求是HTTPS的链接。