之前写了新浪微博的第三方登录一开始的配置以及获取access token和uid,接下来打算把QQ微信的第三方登录,以及常用的api调用都记录下来。
现在先写下QQ的第三方登录获取access token和用户唯一标识。在QQ第三方登录这里一开始就遇到了很多坑。
一开始,我百度搜索的是腾讯开放平台,顺理成章的点进了:http://open.qq.com/,我就纳闷了怎么没有网页,于是在上面建立了平台应用,结果在请求code的时候无论如何都报redirect uri is illegal(100010),真是蛋疼,后来才发现是把我的网页接进去QQ空间里面去了,但是在网站接入概述里面确实也有介绍网站使用qq登录:
但是看了看,发现QQ互联开放平台,于是百度了下,结果发现它是这样的:
最后找下下面的连接终于找到了:http://connect.qq.com,百度第一条连接就是https,也是醉了。
然后去管理中心创建你的应用:
这里填写需要注意的是回调地址,之前看过论坛上说回调地址为了安全改成了全匹配,即是你回调的页面例如:http://www.xxxxx.com/oauth/qq_login.html,则要整个填下去,已经不能只填域名。
创建完就可以获得app id和app key了,接着就可以开始干了。
请求code的url如下:
https://graph.qq.com/oauth2.0/authorize?client_id=your_app_id&response_type=code&redirect_uri=your_redirect_uri&state=STATE
上面需要的参数是你的app id,回调的uri,还有state,state是用来防止csrf攻击的,官网说state是必填,但是我观察到有的网站并没有带上这个值。
QQ授权登陆之后到了回调的uri,接着也是同上一篇文章的步骤:
https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=your_app_id&client_secret=your_app_key&redirect_uri=you_redirect_uri&code=CODE'
也不用多说,需要app id,app key,回调uri,还有刚刚获得的code。
不过这里值得多说的是,与新浪微博不同,这里请求要以get的方式,不然会提示grant_type丢失或空,官方文档有写,不过后来还是犯了这个错。
请求后便会返回你想要的access token及它的有效期,然而需要获取用户唯一标识openid要再多一步:
请求:https://graph.qq.com/oauth2.0/me?access_token=ACCESS_TOKEN,带上你刚刚获得的access token,就可以获取用户唯一标识openid还有app id,接下来带上他们仨你就可以调用各种api接口了。当然有的功能得审核过才行。
官网的说明文档资料找得我有点辛苦:http://wiki.connect.qq.com/开发攻略_server-side#Step2.EF.BC.9A.E8.8E.B7.E5.8F.96AuthorizationCode
微信登录的获取各种参数想必也大同小异,所以之后准备写先写api接口的调用,这篇就先写到这了。