淘宝 OAuth2.0 的登录验证与授权

来源:互联网 发布:手机淘宝店招在线制作 编辑:程序博客网 时间:2024/05/08 22:45

最近老板有意与淘宝合作,网站需要支持淘宝登陆验证与授权,所以研究了下淘宝的第三方登陆,基于OAuth2.0(其实也没啥好说的,原理都一样,主要是一些细节)。写blog的原因是当时研究这玩意是发现文档只有两个版本,一个是官网提供的(http://open.taobao.com/doc2/detail.htm?articleId=118&docType=1&treeId=null),一个是写了一半的技术文档(http://blog.chinaunix.net/uid-25528943-id-3127111.html),却被无数人转载,本人实在看不下去了,功能走通上线后,有时间就把这文档写了,让更多的人可以学习。

1)申请app ID 和 app secret (http://my.open.taobao.com/),然后注册应用,这里应该有让你填个回调地址,即redirect_uri(如果没填,也还可以在控制台-应用设置-基本信息,勾选需要商家授权,这时填你的回调地址:www.xxx.com)


       2) 开发者通过 https://oauth.taobao.com/authorize 获取用户授权码,即code。参数:
参数参数值说明* client_id 即开发者的APPKEY* response_typecode相应类型,填code,即授权码* redirect_uri 回调地址。此地址是开发者注册应用时填写的回调地址(如果不一致,将返回错误)。scope 访问区域。state 用于维持应用状态,淘宝服务器将回填这个值。view 可选值:web(默认)、tmall、wap。
以下是一个请求授权码的示例:
https://oauth.taobao.com/authorize?response_type=code&client_id=12539988&redirect_uri=http://www.xxx.com/taobao/auth&state=1

收到请求后,淘宝服务器返回值:

参数说明

code授权码      正常结果。

error错误码     异常时返回

error_description错误描述   异常时返回。

如果淘宝服务器返回的值有code,恭喜你,已经完成第二步,如果错误请在http://open.taobao.com/doc2/detail.htm?articleId=118&docType=1&treeId=null的最后错误排查中排查自己的错误。

3)拿到授权码code后,就可以换取用户基本信息。

用post请求
https://oauth.taobao.com/token?grant_type=authorization_code&response_type=code&client_id=23294542&client_secret=27552d4ac86de9603cd4fe0d125e6062&redirect_uri=http%3A%2F%2Fwww.xxx.com%2F&code=X9XPfI9JVHiTgKME6JyAXDAD315945(填写淘宝服务器返回给你code)


这样你就可以得到类似的数据:


{
  "taobao_user_nick": "taobaonick",
  "re_expires_in": 0,
  "expires_in": 7776000,
  "expire_time": 1459911894299,
  "r1_expires_in": 1800,
  "w2_valid": 1452135894299,
  "w2_expires_in": 0,
  "w1_expires_in": 1800,
  "r1_valid": 1452137694299,
  "r2_valid": 1452135894299,
  "w1_valid": 1452137694299,
  "r2_expires_in": 0,
  "token_type": "Bearer",
  "refresh_token": "620251524f72a26b6c8ecd1ZZe29bbbxxx",
  "open_uid": "AAENArTTACOmNcx4Z-_D0qU2",
  "refresh_token_valid_time": 1452135894299,
  "access_token": "620141595ca09af54aa5918ZZeafd0c0fe770bb07xxx"
}


这样整个认证过程就结束了,你接下来要做的是就是创建两个url,一个是login,一个是auth,然后数据库存从淘宝服务器上得到的这些信息(或者再你的user表中创建等等)

.......

0 0
原创粉丝点击