CocosCreator微信小游戏入门实战《小猫钓鱼》(八):微信登陆

转载请保留原文链接:https://blog.csdn.net/zzx023/article/details/83064414

 

前面我们已经基本完成了一个微信小游戏的开发,还剩下一些细节需要去完善的,例如鱼线,背景丰富这些我就不细述了。相信通过前面几节,剩下的这些细节我们也可以很简单的处理完。

 

接下来我们进入微信小游戏SDK的接入部分。

 

在这之前,你可以看一下以下几个官方的文档:

微信小游戏API:

https://developers.weixin.qq.com/minigame/dev/api/render/canvas/wx.createCanvas.html

微信小游戏官方文档:

https://developers.weixin.qq.com/minigame/dev/index.html

Cocoscreator关于接入微信的官方文档:

http://docs.cocos.com/creator/manual/zh/publish/publish-wechatgame.html

 

同时你得准备两个东西:

  1. 域名以及https SSL证书,这里我准备了一个域名:www.zzxgame.com.cn
  2. 服务器,我这边是弄了一个腾讯云服务器

 

准备完后我们先看下微信官方对于登陆的文档说明,我们主要看下官方给的登陆流程:

 

 

 

也就是说需要我们在小程序中使用wx.login()获取到code,然后再将code给到服务器,服务器去调用code2Session接口得到OpenID完成登陆。

 

在这里我们用Node.js+Express完成一个简单的登陆服务器用以帮助小游戏完成登陆流程。

首先下载并安装NodeJS,下载地址:

http://nodejs.cn/download/

 

安装完后运行

node –v

npm –v

显示如下证明安装成功:

 

安装完成后新建一个文件夹作为工程目录,启动命令行,进入工程目录,安装Express:

npm install express

看到以下表示安装成功:

 

在工程目录下新建一个app.js脚本

var app = require('express')();

var fs = require('fs');

var http = require('http');

var https = require('https');

//配置https SSL证书

var privateKey  = fs.readFileSync('3_zzxgame.com.cn.key');

var certificate = fs.readFileSync('2_zzxgame.com.cn.crt');

var credentials = {

    ssl: true,

    port: 18800,

    key: privateKey,

    cert: certificate

};



//http服务,创建server并监听指定端口

var httpServer = http.createServer(app);

var PORT = 18800;



httpServer.listen(PORT, function() {

    console.log('HTTP Server is running on: http://www.zzxgame.com.cn:%s', PORT);

});

//https服务

var httpsServer = https.createServer(credentials, app);

var SSLPORT = 18801;



httpsServer.listen(SSLPORT, function() {

    console.log('HTTPS Server is running on: https://www.zzxgame.com.cn:%s', SSLPORT);

});



//http请求解析中间件

var bodyParser = require('body-parser');



// 创建 application/x-www-form-urlencoded 编码解析

var urlencodedParser = bodyParser.urlencoded({ extended: false })



//Welcome

app.get('/', function(req, res) {

    if(req.protocol === 'https') {

        res.status(200).send('Welcome to Safety Land!');

    }

    else {

        res.status(200).send('Welcome!');

    }

});



//test 带参数POST

app.post('/test', urlencodedParser, function(req, res) {

    //console.log(req);

    console.log(req.query.id);

    console.log(req.query.name);

    res.send('Welcome!ID:' + req.query.name + ',name:' + req.query.name);

});

 

别忘了把证书文件放在工程目录下

 

完成后,命令行输入node app.js启动:

 

在浏览器中输入https://www.zzxgame.com.cn:18801进行测试

你也可以通过一些在线测试工具去测试你的接口

注意我们使用bodyParser.urlencoded 来解析 request 中 body的 urlencoded字符, 只支持utf-8的编码的字符。

 

OK,没问题,接下来我们依葫芦画瓢,做一个接受code并请求获取openid的接口

app.post('/token', urlencodedParser, function(request, response) {


    var wxUrl = "https://api.weixin.qq.com/sns/jscode2session?appid= xxxxxxxxxxxxxxxxxx&secret=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&js_code=" + request.query.code +"&grant_type=authorization_code";


    var content = '';

    var req = https.request(wxUrl, function(res) { 

        res.on('data',function(body){ 

            console.log('return'); 

            content+=body; 

        }).on("end", function () { 

            response.write(content); 

            response.end(); 

        }); 

    }).on('error', function(e) { 

        console.log("Got error: " + e.message); 

    }); 

    req.end();

});

 

code2Session的API参考:

https://developers.weixin.qq.com/minigame/dev/api/open-api/login/code2Session.html

 

appid和secret从微信公众平台,设置->开发设置 中获取

 

页面往下拉一拉,同时请配置允许访问的合法域名,正式上线的话域名要求备案……,不备案的话只能调试用,我就是因为懒得去弄备案的东西,所以做了一些小游戏都没办法上线 T_T

 

OK,server这边搞定。

 

接下来我们来看客户端的代码。

    start () {

        if (cc.sys.platform === cc.sys.WECHAT_GAME)

        {

            wx.login({

                success: function(res){

                    wx.request({

                        url :   "https://www.zzxgame.com.cn:18801/token?code=" + res.code,

                        method  :   "POST",

                        success :   function (data) {

                            if (data.statusCode == 200) {

                                console.log("request" , data);

                            }

                        }

                    });

                }

            });

        }

    },

我们把返回的openid和session_key打印一下,以便测试。

 

现在构建一下,注意发布平台选择Wechat Game,md5 cache请勾选上,appid请正确填写:

 

构建完后,点击运行,在微信开发者工具中进行预览。

注意在CocosCreator的设置中,配置好微信开发者工具的路径。

 

运行后,我们看下log:

 

OK没问题,微信登陆完成。

 

最后说一下session_key的用处。

Session_key表示的是微信用户的登陆态。

微信用户通过wx.login登陆后获得的session_key是拥有一定时效性的,也就是说会持续一段时间,同时也会存在过期的情况。我们可以看到平常我们玩的小游戏在第一次完的时候都会进行微信登陆,同时后续再打开玩的时候就不需要登陆了,如果有很长一段时间没有玩,再次打开的时候又需要登陆,其实这就是session_key过期了。

我们可以通过wx.checkSession去检测session_key是否过期,如果wx.checkSession调用成功,则我们不需要用户再进行登陆,如果wx.checkSession调用不成功,说明session_key过期需要重新登陆,这时候我们再调用wx.login。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: Cocos Creator是一种基于JavaScript的游戏开发引擎,可用于开发简单的手机游戏应用程序,包括微信小游戏。目前,Cocos Creator平台上有120多套微信小游戏源代码可供游戏开发者使用,这些源代码包含了各种类型的游戏,如益智游戏、动作游戏、运动游戏、角色扮演游戏等等。这些源代码可大大加速游戏开发进程,并使游戏开发者能够专注于游戏的设计和创意。此外,通过Cocos Creator平台,游戏开发者可以使用丰富的可视化编辑工具和开发工具,轻松创建游戏精灵、动画和场景等元素,进而快速实现游戏的构建。总的来说,Cocos Creator平台上的120多套微信小游戏源代码为游戏开发者提供了可靠的资源和支持,使他们可以更快、更便捷地创建出高质量的微信小游戏,从而实现更大的商业成功。 ### 回答2: cocos creator是一款非常受欢迎的游戏开发引擎,其集成了丰富的功能和工具,可以很方便地构建2D和3D游戏。微信小游戏则是目前非常流行的一种轻量级移动游戏,因为与微信平台无缝集成,所以被越来越多的开发者采用。 在这样的背景下,120多套cocos creator微信小游戏源码的出现,可以让开发者更加便捷地开展游戏开发工作。这些源码涵盖了各种类型的游戏,如飞行射击、跑酷、休闲益智、卡牌战斗等等,开发者可以根据自己的需要选择适合自己的源码进行二次开发与修改。 使用这些源码,不仅可以节省大量的开发时间和精力,而且还可以获得很好的学习机会,了解其他优秀游戏的设计思路和开发技巧,从而提高自己的开发水平。当然,开发者也可以将这些源码用于商业项目,加速产品的上线和推广。 总之,cocos creator微信小游戏120多套源码的出现,为广大的游戏开发者带来了极大的便利和启示,也让我们更加期待未来cocos creator微信小游戏的发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值