收藏
回答

小程序使用“微信账号登录”获取不到openid,怎么处理?

小程序使用“微信账号登录”获取不到openid,提示“未登录”。

requestID: b3a9dd5-1380-4bfb-901e-af8f9dfdcf8f,请求时间: 2026年2月25日12:19左右

代码:

const cloud = require('wx-server-sdk');

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV });

const db = cloud.database();


function getOpenId(event, context) {

  // 1. getWXContext(同步,返回 OPENID)

  if (cloud.getWXContext) {

    try {

      const wxContext = cloud.getWXContext();

      if (wxContext && wxContext.OPENID) return wxContext.OPENID;

      if (wxContext && wxContext.openid) return wxContext.openid;

    } catch (e) {}

  }

  // 2. 入参 context(微信注入)

  if (context && context.openid) return context.openid;

  if (context && context.OPENID) return context.OPENID;

  if (context && context.userInfo && context.userInfo.openId) return context.userInfo.openId;

  // 3. 网关有时会把用户信息放在 event

  if (event && event.userInfo && event.userInfo.openId) return event.userInfo.openId;

  if (event && event.openid) return event.openid;

  return '';

}


exports.main = async (event, context) => {

  let openid = getOpenId(event, context);

  if (!openid && cloud.getWXContext) {

    try {

      const p = cloud.getWXContext();

      const wxContext = typeof p.then === 'function' ? await p : p;

      openid = (wxContext && (wxContext.OPENID || wxContext.openid)) || '';

    } catch (e) {}

  }

  if (!openid) {

    return { ok: false, errMsg: '未登录' };

  }

回答关注问题邀请回答
收藏

2 个回答

  • Mr.Zhao
    Mr.Zhao
    02-25

    你自己调试下代码, 不行吗

    02-25
    有用
    回复
  • 智能回答 智能回答 本次回答由AI生成
    02-25
    有用
登录 后发表内容