微信小游戏云开发入门

作为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
posted @ 2019-10-24 11:28  wanhong  阅读(1376)  评论(0编辑  收藏  举报