首页 > Personal > cocos2d-x > cocos2d-x: OAuth2认证
2013
12-24

cocos2d-x: OAuth2认证

因为想要让用户可以通过facebook和新浪登陆,所以需要做Oauth2认证。各个公司都有各自SDK,facebook要下载facebook的SDK,新浪要下新浪的SDK,为了避免以后需要接更多网站的时候,产生更多的SDK接入工作量,还是决定自己处理这些东西。但是如果接入需求不多的话,接入SDK也是种不错的选择,毕竟代码都写好了,使用起来也比较方便。各个公司用的都是OAuth2,使用接口都是https请求,有了access_token后使用curl就可以处理了,问题就是这第一步取得access_token,是需要输入用户名密码的。那新浪来说,认证接口里只对通过新浪认证的公司才给予直接带用户名密码请求的权限,没有权限的话只能通过网页输入用户名密码,然后获取code再进行下一步认证取得access_token。但是这需要用到游戏内显示网页的功能。因为facebook被墙,就拿新浪来做测试。

先说OAuth2认证,先要到新浪去的开放平台去注册一个账户,然后申请一个应用,很简单就不多说了。进入管理界面用户基本信息里找到App Key和App Secret这是以后要用到的。再到高级信息里的OAuth2.0 授权设置添加授权回调页和取消取消授权回调页为https://api.weibo.com/oauth2/default.html,具体请参考官方文档的授权机制,这个地址也是后面要用到的。

然后就可以看下接口,主要的就是这个
OAuth2的access_token接口
https://api.weibo.com/oauth2/access_token,POST请求,有一点有点奇怪,curl调用这个接口如果用post方式写参数的话调用总是失败,说可能缺少参数client_id或者client_secret,但是参数想GET一个写好,然后只要设置为POST请求,就可以了,不知道是不是新浪的bug。带3个参数
client_id 申请应用时分配的AppKey。
client_secret 申请应用时分配的AppSecret。
grant_type 请求的类型,填写authorization_code,其实还可以填写password,但是我的应用没有权限,返回结果会显示没有权限。
grand_type如果是password的话需要填写username和password参数,这个没有成功过,也不确定,但是因为是看官方C++ SDK找到的,应该是可以的。
grand_type如果是authorization_code的话,需要code和redirect_uri两个参数。redirect_uri填写上面的授权回调页地址。code就需要调用另一个授权接口了。返回的话是一个json包括
access_token 接口获取授权后的access token,string类型。
expires_in access_token的生命周期,单位是秒数,int类型。
remind_in 和expires_in一样,但是官方说即将废弃,请使用expires_in,int类型。
uid 当前授权用户的UID,string类型。

OAuth2的authorize接口
https://api.weibo.com/oauth2/authorize,GET/POST请求,两个主要参数
client_id 申请应用时分配的AppKey。
redirect_url 和上面一样
这个接口就是后面需要网页显示的内容了。请求成功后会调回到https://api.weibo.com/oauth2/default.html?code=XXXX回调页,跟着的参数code就是我们需要的了。

其他的接口不说了,可以自己去看新浪的API文档

最后编辑:
作者:wy182000
这个作者貌似有点懒,什么都没有留下。

留下一个回复