User 用户

sdk会在初始化默认获取用户的微信资料作为目睹的用户信息, 如果用户不允许,则会生成一个匿名用户。。 sdk会使用小程序的storage来存储用户信息。使用到的key有WAJAX_COOKIE, OPENID, UNIONID。 当storage中存有用户信息时,sdk会使用storage中的用户信息,不会获取用户的微信资料。

设置用户信息

设置storage中用户信息,可以在初始化前设置,这样sdk会使用这个用户信息初始化,而不是获取用户的微信信息。

Mudu.storage.setUser({
  name: '李华',
  avatar: 'http://avatqa.com/avata.jpg',
  id: 'aakldsfja23423'
})

获取用户信息

获取storage中用户信息


Mudu.storage.getUser()

// 返回以下信息
{
  user,
  avatar,
  id
}

删除用户信息

删除storage中的用户信息(慎用)

Mudu.storage.delUser()

设置并用户信息并记录

设置storage中用户信息,并登录到目睹后台,需要初始化之后才能进行.

Mudu.Room.User.Assign({
  name: '王武',
  avatar: 'http://weibo.com/sss.jpg',
  id: 'sldkjfsdkl234'
})

设置code换取session_key链接

由于小程序限制,用户在不登录时仅能获取到头像、昵称等信息,无法获取openid,unionid等唯一标志,此时sdk会设置成匿名用户(匿名用户不可进行投票等操作),详见小程序登录

所以需要使用appid和appsecret获取openid等唯一标志,详见code换取session_key, appid和appsecret为敏感信息,所以获取session_key的接口需要手动实现,sdk仅通过对接该接口来获取openid并设置成非匿名用户。

sdk使用get方式请求接口,并带上code参数。 接口需要返回text/html格式的数据,格式如下

{
  status: 'y',
  data: {
    openid: 'user_openid',
    unionid: 'user_unionid',
  }
}

接口示例(nodejs版本):

const express = require('express')
const request = require('request')
const app = express()
const APPID = 'your_appid'
const SECRET = 'your_appsecret'

app.get('/', function (req, res) {
    const JSCODE = req.query.code
    const url = `https://api.weixin.qq.com/sns/jscode2session?appid=${APPID}&secret=${SECRET}&js_code=${JSCODE}&grant_type=authorization_code`
    request.get(url, function (e, r, body){
        if (e) {
            res.end(JSON.stringify({status: 'n', data: {error: 'some error in request'}}))
        } else {
            res.end(JSON.stringify({status: 'y', data: JSON.parse(body)}))
        }
    })
})

app.listen(4000, function () {
    console.log('localhost:4000')
})

设置用户id使用字段

当使用微信接口登录成功后,sdk默认使用openid作为用户的唯一id, 若想将unionid作为用户的唯一id, 可以通过setOption接口来设置使用unionid作为唯一id

注意:该接口在Mudu.Init执行之前调用才有效,若本地已经存在用户信息, 则需要先调用Mudu.storage.delUser()先删除用户信息。

Mudu.setOption('visitorid_field', 'unionid')

results matching ""

    No results matching ""