微信小游戏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具体使用方式还没完善,后续有空再加上,今天先到这里。

  欢迎探讨有关微信小游戏的制作和运营~。

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