Cocos2d-x微信登录

一、简介

如果我们每使用一个APP都要注册,我相信大家都会很烦躁。而且现在很多的APP注册都是要求手机号注册,最开始APP是通过这个方法来识别和防止机器人恶意注册,但同时也给我们带来了很多的不便,还有就是信息的泄漏(我相信很多的人接到过这样的电话或短信)。
现在随着智能机的普及和微信广泛应用,我们可以使用微信来进行登录,它不但能有效的降低我们信息泄漏的可能,还不需要我们进行那繁琐的注册和费劲脑筋去记那些账号密码。

二、申请微信开发者资质

微信开发平台地址
https://open.weixin.qq.com
Cocos2d-x微信登录_第1张图片
微信开发平台.png

当然你想成为开发者用微信的东西,这是需要交纳300元一年的费用的。
在注册号账号之后,我们就可以在管理中心创建一个新的应用了。注意:一个账号最多只能创建十个应用。

Cocos2d-x微信登录_第2张图片
创建应用.png

然后是填写应用的基本信息

Cocos2d-x微信登录_第3张图片
填写基本信息.png

这里还要注意选择使用微信开放的功能

Cocos2d-x微信登录_第4张图片
注意选择使用微信开放的功能.png

创建成功之后,我们就能拿到AppID和AppSecret这两个非常重要的信息了。在这里我们要记得理解把AppSecret记录下来。

Cocos2d-x微信登录_第5张图片
AppSecret.png

三、下载微信SDK

首先,点击首页旁边的资源中心,然后在点击资源下载,选择我们需要下载的资源下载

Cocos2d-x微信登录_第6张图片
资源下载.png

还有一个很重要的事,我们需要看下它的文档。在资源中心里面的第一个选项移动应用里面。

Cocos2d-x微信登录_第7张图片
功能介绍.png

四、授权登录接入代码示例

iOS平台应用登录接入代码示例(请参考iOS接入指南)
>void sendAuthRequest()
{
//构造SendAuthReq结构体
SendAuthReq* req =[[[SendAuthReq alloc ] init ] autorelease ];
req.scope = @"snsapi_userinfo" ;
req.state = @"123" ;
//第三方向微信终端发送一个SendAuthReq消息结构
[WXApi sendReq:req];
}
Android平台应用授权登录继而代码示例(请参考Android接入指南)
>{
//send oauth request
req.scope = @"snsapi_userinfo" ;
req.state = @"123" ;
api.sendReq(req);
}

调用这个之后,手机就会弹出这个微信验证。


Cocos2d-x微信登录_第8张图片
湖南骨牌.jpg

点击“确认登录”,会回调到WXApiDelegate 的onResp函数,得到所要的code并和appid,secret,grant_type组成一个HTTP RUL 字符串 send到https://api.weixin.qq.com/sns/oauth2/access_token? 之后程序能获取到微信账号的昵称、性别、头像图片地址等基本信息了。下一步,就是跳转到登录成功后的大厅界面,将将这些信息显示在玩家信息栏位了。

如果登录过一次后,将登录成功后的access_token和openid信息存储,在下次启动游戏时我们就可以直接进行登录。

>void MissionWeiXin::logonWeiXin()
{
cocos2d::log("3.1. MissionWeiXin::logonWeiXin: 登录微信,判断是否第一次登录");

std::string access_token = cocos2d::UserDefault::getInstance()->getStringForKey("access_token");
std::string refresh_token = cocos2d::UserDefault::getInstance()->getStringForKey("refresh_token");
std::string openid = cocos2d::UserDefault::getInstance()->getStringForKey("openid");
if (access_token != "" && openid != "")
{
    cocos2d::log("3.2. MissionWeiXin::logonWeiXin: 第一次登录");

    Req_UserInfo(access_token,openid);
}
else
{
    JniFun::longinWX(MissionWeiXin::kAppID.c_str(), MissionWeiXin::kAppSecret.c_str());
    cocos2d::log("3.3. MissionWeiXin::logonWeiXin(%s, %s): 不是第一次登录", MissionWeiXin::kAppID.c_str(), MissionWeiXin::kAppSecret.c_str());
}
}

你可能感兴趣的:(Cocos2d-x微信登录)