微信小遊戲ACCESS_TOKEN和OPENID彙總·一

  週末無聊在家折騰點小技術,順便也用用昨晚在微信羣裏聽的creator教學是否好用。做了一個小小的小遊戲demo,然後想自己搭建服務器,把用戶基本信息和有效數據保存起來。執行到這裏的時候就去找相關文檔和博客瞭解詳情,但是不找不知道,一找嚇一跳,說得技術好像都有點老套,故此結合我今天實踐的東西寫一點點小結:

  目前的狀態,最最最高級別可用的是openid和unionid,對於小遊戲而言只關注openid即可。微信有一套自己的用戶隱私保護規則,通過openid無論如何都無法獲取到微信號,這裏特此說明下。

  那麼如何一步一步獲得openid呢?我簡化成以下三步驟:

  1、獲得登錄code:

  

        wx.login({
          success:function(res){
            console.log(res);
          }

這裏無論如何都可以獲取到一個code參數,這個臨時變量要保存一下,後面會用到,實際返回結果如下:

{errMsg: "login:ok", code: "011XVuNa2ElJUJ09tBLa2FZFNa2XVuNQ"}

注意這裏的code返回結果是動態變化的,我們要隨時更新。

  2、根據code獲取session_key和openid:

獲取到的code要給你自己搭建的小遊戲服務器發一條消息,服務器再把客戶端帶上來的code發送給微信小程序官網請求session_key和openid,http請求格式如下:

https://api.weixin.qq.com/sns/jscode2session?appid=你的小程序appid&secret=小程序祕鑰&js_code=微信登錄時的code&grant_type=authorization_code

執行正確之後會返回一個json表格,大概如下:

{"session_key":"mF\/qMjVt01swYfbZOfgchg==","openid":"os3x85UNxmJbi02tNB36L5L0PJcc"}

這裏的session_key也是動態變化的,唯有openid爲唯一數據,我們數據庫可以把這個openid作爲唯一id用(不考慮遷移情況)

  3、根據session_key和小遊戲客戶端的wx.getUserInfo執行返回的encryptedData和iv 以及你自己的小遊戲appId解析出來實際用戶信息,解析正確結果大致如下:

// 解密後的數據爲

data = {
   "nickName": "Band",
   "gender": 1,
   "language": "zh_CN",
   "city": "Guangzhou",
   "province": "Guangdong",
   "country": "CN",
   "avatarUrl": "http://wx.qlogo.cn/mmopen/vi_32/aSKcBBPpibyKNicHNTMM0qJVh8Kjgiak2AHWr8MHM4WgMEm7GFhsf8OYrySdbvAMvTsw3mo8ibKicsnfN5pRjl1p8HQ/0",
   "unionId": "ocMvos6NjeKLIBqg5Mr9QjxrP1FA",
   "watermark": {
     "timestamp": 1477314187,
     "appid": "wx4f4bc4dec97d474b"
   }
}

  通過一上三步驟可以獲取用戶基礎數據,對於小遊戲來說基本夠用。

  點擊下載解析demo:多語言解密算法下載

  微信小遊戲登錄流程可參考:Cocos creator微信小遊戲登錄以及獲取授權信息

  小遊戲中openid具體使用方式還沒完善,後續有空再加上,今天先到這裏。

  歡迎探討有關微信小遊戲的製作和運營~。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章