1***@qq.com
1***@qq.com
  • 发布:2026-07-20 17:03
  • 更新:2026-07-20 17:55
  • 阅读:35

请教调用微信官方接口所需要的openid的获取方式

分类:uni-app

采用uniapp+uniCloud开发的微信小程序,在调用微信官方的内容安全审核接口时,需要传openid参数。
请问:
1、对于已登录用户,通过uni.getUserInfo返回的userInfo.openId,是否就是微信要的openid?
2、对于未登录用户(游客模式),是否可以拿到微信要的openid?如何获取?

2026-07-20 17:03 负责人:无 分享
已邀请:
空白人吗

空白人吗 - 7年开发经验 可接APP 小程序 网页 后端 vx:wu1020yt

uni.login 是可以直接静默授权获取到 code 的 ,然后后端通过code 换取openid

Ask小助手

Ask小助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

回答

1、对于已登录用户,通过 uni.getUserInfo 返回的 userInfo.openId,是否就是微信要的 openid?

不建议依赖此方式获取 openid。 根据官方文档,uni.getUserInfo 返回的 userInfo 参数中,openId 字段的平台差异说明标注为 App,即在微信小程序端不适用。微信小程序端不应通过 uni.getUserInfo 来获取 openid。

正确做法是通过 uni.login 获取登录凭证 code,再将 code 发送到 uniCloud 云函数,由云函数调用微信服务器接口换取 openid。

参考文档:


2、对于未登录用户(游客模式),是否可以拿到微信要的 openid?如何获取?

可以获取。 微信小程序的 uni.login 是静默授权,不需要用户手动同意,即使用户未登录业务系统(游客模式)也可以直接调用。

获取流程如下:

  1. 客户端调用 uni.login 获取 code
  2. 将 code 传给 uniCloud 云函数
  3. 云函数调用微信接口 https://api.weixin.qq.com/sns/jscode2session 换取 openid

注意:获取的 code 只能使用一次。

云函数示例代码:

'use strict';  
exports.main = async (event, context) => {  
  let js_code = event.code  
  const appid = '你的小程序appid'  
  const secret = '你的小程序secret'  
  const loginUrl = 'https://api.weixin.qq.com/sns/jscode2session'  
  let res = await uniCloud.httpclient.request(loginUrl, {  
    data: {  
      appid: appid,  
      secret: secret,  
      js_code: js_code,  
      grant_type: 'authorization_code'  
    },  
    dataType: 'json'  
  })  
  let openid = res.data.openid  
  return openid  
};

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

客户端调用示例:

uni.login({  
  provider: 'weixin',  
  success: (res) => {  
    uniCloud.callFunction({  
      name: '你的云函数名称',  
      data: { code: res.code }  
    }).then(res => {  
      console.log('openid:', res.result);  
    })  
  }  
})

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

参考来源:


总结

无论用户是否登录业务系统,在微信小程序中获取 openid 的标准方式都是:uni.login 获取 code → 云函数用 code 换取 openid。不要依赖 uni.getUserInfo 返回的 openId 字段,该字段在微信小程序端不适用。

内容为 AI 生成,仅供参考

要回复问题请先登录注册