微信小游戲雲開發入門


作為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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM