收藏
回答

同一个微信用户同一个appid,在云函数中获取到的openid不同?

首先,在社区里找到很多几乎相同的问题,但是不少有人在下面杠。自己测试过很多遍,找不到是哪出现的问题,才来发帖。

问题描述:

在微信授权登录,通过云函数将授权数据写进数据库,获取openid是用云函数获取的。但是近期发现有几个用户出现不同openid。

appid:wx33d684afbf6bfb1f

openid :

这四个是同一个用户的;

这两个是同一用户的;

这两个是同一用户的

云函数代码如下

// 云函数入口文件
const cloud = require('wx-server-sdk')


cloud.init()
const db = cloud.database();
const _ = db.command;
// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()


  const count = await db.collection('user').where({
    openid: wxContext.OPENID
  }).get();


  if (count.data.length == 0) {
    const userInfo = event.userInfo;
    userInfo.openid = wxContext.OPENID;
    const add = await db.collection('user').add({
      data: userInfo
    });
    if (add.errMsg === 'collection.add:ok') {
     const config = await db.collection('configset').where({name:'aliyun'}).get();
    //  console.log(config);
      //用户添加成功,初始化该用户的使用次数。
      var usageCcount = {
        count: (config.data)[0].dayCount,
        userId: add._id
      }
      await db.collection('usage_count').add({
        data: usageCcount
      });
      //为邀请者添加一次使用次数
      if (userInfo.parentId != 0) {
        const userCountArray = await db.collection('usage_count').where({
          userId: userInfo.parentId
          // userId: add._id
        }).get();
        // console.log(s);
        await db.collection("usage_count")
          .doc(userCountArray.data[0]._id)
          .update({
            data: {
              // 表示指示数据库将字段自增 10
              count: _.inc(1)
            }
          })
          .then((res) => {
            // console.log(res.data);
          });
      }
      userInfo._id = add._id;
      return userInfo;


    } else {
      throw add.errMsg;
    }
  } else {
    return count.data[0];
  }
}
最后一次编辑于  2022-01-24
回答关注问题邀请回答
收藏

2 个回答

  • Mr.Zhao
    Mr.Zhao
    2022-01-24
    获取openid有问题,wxContext.OPENID 其它代码都不用看,你说获取的不同,为啥不把openid都亮出来呢?
    


    2022-01-24
    有用
    回复 2
    • 可乐不能喝
      可乐不能喝
      2022-01-24
      openid已经更新到帖子里了,请问有什么高见
      2022-01-24
      回复
    • Mr.Zhao
      Mr.Zhao
      2022-01-24回复可乐不能喝
      代码都可以不亮,让官方查openid是谁的。同一个用户产生多个openid,这种帖子见多了,提问的人说是同一个,实际又不是一个。这种问题只有官方能回答
      2022-01-24
      回复
  • dreamhunter
    dreamhunter
    2022-01-24
    aliyun 这种用户名是唯一的么?
    
    2022-01-24
    有用
    回复 1
    • 可乐不能喝
      可乐不能喝
      2022-01-24
      是的,是唯一的,其他业务都能正常跑是没有问题的,就是获取openid时,有好几个用户opneid不同
      2022-01-24
      回复
登录 后发表内容