最近两天都在研究第三方登录,为了温习下流程,和避免以后又走上弯路,留下一丝痕迹,也方便大家参考,如有错误请大家指正。
一开始我是先弄微信的第三方登录,结果发现貌似现在是要付费才可以?
然后就屁颠屁颠的去弄新浪微博的了:http://open.weibo.com/connect
按照他的流程走完你应该就能获得app key 和 app secret了。
这里先说下没审核上线前只能自己添加15个账号用以授权:(微博名)
然后去设置回调页:
新浪微博第三方这里遇到问题不多,很快就好了,下面讲详细实现。
先看看接口文档
接口文档
接口 | 说明 |
---|---|
OAuth2/authorize | 请求用户授权Token |
OAuth2/access_token | 获取授权过的Access Token |
OAuth2/get_token_info | 授权信息查询接口 |
OAuth2/revokeoauth2 | 授权回收接口 |
OAuth2/get_oauth2_token | OAuth1.0的Access Token更换至OAuth2.0的Access Token |
1. 引导需要授权的用户到如下地址:
YOUR_CLIENT_ID是你的app key,现在要获取code所以response_type=code就行了,YOUR_REGISTERED_REDIRECT_URI就是你要回调的页面,注意域名匹配在新浪上填写的,这里的实现可以是直接一个链接,或者跳到回调页面进行判断处理再重定向到这个url
2. 如果用户同意授权,页面跳转至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE
这里就可以得到code,这里回调到页面就可以处理接下来的一步了
3. 换取Access Token
YOUR_CLIENT_SECRET是你的app secret,grant_type=authorization_code就这样写,然后code是你刚刚获得的code值,到了回调页面你就可以到后台处理了,这里我一开始用ajax去请求结果发现跨域请求jquery不能接受数据的返回,而且这里返回会带有access_token,官方有说这个的获取建议放在服务端,避免被劫持。所以后来我便放到后台处理,首先获取code值,然后用post的方式请求,记得新浪微博这里用post方式,不然一直报错。
我用的是php,具体的后台发送请求请看:http://blog.csdn.net/nohaoye/article/details/46894205
其中client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET可以使用basic方式加入header中,返回值
请求成功了就会返回数据,但是不是官方的下面这个,返回还会有一个用户唯一标识uid,新浪微博是一步就都获取了。
1
2
3
4
5
|
{
"access_token"
:
"SlAV32hkKG"
,
"remind_in"
: 3600,
"expires_in"
: 3600
}
|
4. 使用获得的Access Token调用API
新浪微博第三方登录就写到这,之后是QQ第三方登录。