作为h5游戏前端来说,对javascript肯定是很熟悉, 如果不熟悉,那就是被typescript害惨了.
js很强大,不仅仅体现了前端,在服务器端也是大显神威 nodejs,mongodb.
恰巧微信小游戏云开发,nodejs,mongodb正好能用得上。所以我觉得在一款单机游戏中试水云开发,装装13.
万事开头难~~~
在开发之前我关心下面几件事件
1:了解一些概念
2: 小游戏云开发提供了什么?
3:开发环境及鉴权?
4:数据存储调用?
5:怎样调用?
概念:
access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token,开发者需要进行妥善保存。
openid 是用户唯一标识,且没有过期时间
获取access_token(微信小游戏服务器端) 见 https://developers.weixin.qq.com/minigame/dev/api-backend/open-api/access-token/auth.getAccessToken.html
小游戏云开发提供了 数据库 存储 云函数
作为了一个小游戏开发码农来说, 买服务器,配cdn等都是很麻烦的,小游戏云开发环境都给提供了。
另外能满足基本的需求,但是如果量大的话,花钱买容器嘛。如果数据不好的话,一毛钱的损失都没有。
例子: 在线对战五子棋: 云开发 / 小游戏 https://tencentcloudbase.github.io/
开发环境及鉴权
传统的鉴权:通过access_token
鉴权: 自带鉴权光环,不必是传统一的token形式
环境: 通过配置云开发的根目录(project.config.json中增加了字段 cloudfunctionRoot
用于指定存放云函数的目录)
云函数写好后,要上传到云开发环境
微信小游戏端 初始化云环境后,wx.cloud.init({env:}), 就可以调用云函数了.
获取access_token
const cloud = require('wx-server-sdk') const rp = require('request-promise') cloud.init() // 云函数入口函数 exports.main = async (event, context) => { const page = event.page const scene = event.scene //appid和秘钥 const appid = '***', secret = '***'; const AccessToken_options = { method: 'GET', url: 'https://api.weixin.qq.com/cgi-bin/token', qs: { appid, secret, grant_type: 'client_credential' }, json: true }; //获取AccessToken const resultValue = await rp(AccessToken_options); const token = resultValue.access_token; }
// 操作数据库 const wxContext = cloud.getWXContext() let user = db.collection('user') let {total} = awaitnew Promise( (resolve, reject)=>{ user.where({ _openid: wxContext.OPENID }).count().then( res=>{ resolve(res) }) }) let data = { _openid: wxContext.OPENID, updateDate:new Date().getTime(), ...event, } if( total == 0 ){ data.createDate =new Date().getTime() return await user.add({ data }).then( res=>{ console.log('新增成功->', res) return res }).catch( err=>{ console.log('新增失败',err) }) }else{ return await user.where({ _openid: wxContext.OPENID }).update({ data }).then( res=>{ console.log('更新成功->', res) return res }).catch( err=>{ console.log('更新失败',err) }) }
数据库增删查改 https://www.jianshu.com/p/1fab91447721