zoukankan      html  css  js  c++  java
  • 微信小游戏云开发入门

    作为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
  • 相关阅读:
    Proj THUDBFuzz Paper Reading: The Art, Science, and Engineering of Fuzzing: A Survey
    Proj THUDBFuzz Paper Reading: A systematic review of fuzzing based on machine learning techniques
    9.3 付费代理的使用
    11.1 Charles 的使用
    第十一章 APP 的爬取
    10.2 Cookies 池的搭建
    10.1 模拟登录并爬取 GitHub
    11.5 Appium 爬取微信朋友圈
    11.4 Appium 的基本使用
    11.3 mitmdump 爬取 “得到” App 电子书信息
  • 原文地址:https://www.cnblogs.com/honghong87/p/11669809.html
Copyright © 2011-2022 走看看