微信小程序开发获取openid的问题

本文详细介绍了在微信小程序中实现用户登录的方法,包括通过wx.login接口获取code并发送至后台换取OpenID的过程,以及使用云开发内置函数直接获取OpenID的简便方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是查到的方法

wx.login({
      success: res => {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
        if(res.code){
          wx.getUserInfo({
            success: function(res_user){
              wx.request({
                url: 'http://192.168.xx.xx:8080/test/v1/getOpenId', //这里是本地请求路径,可以写你自己的本地路径,也可以写线上环境
                data: {
                  code: res.code,//获取openid的话 需要向后台传递code,利用code请求api获取openid
                  headurl: res_user.userInfo.avatarUrl,//这些是用户的基本信息
                  nickname:res_user.userInfo.nickName,//获取昵称
                  sex:res_user.userInfo.gender,//获取性别
                  country: res_user.userInfo.country,//获取国家
                  province: res_user.userInfo.province,//获取省份
                  city: res_user.userInfo.city//获取城市
                },
                success: function(res){
                  wx.setStorageSync("openid", res.data)//可以把openid保存起来,以便后期需求的使用
                }
              })
            }
          })
        }
      }
    })

原文链接:https://blog.youkuaiyun.com/qq_39851704/article/details/79025557

但是询问老师之后,发现云开发有个自带的函数login可以直接获取到openid等一系列信息。

// 云函数模板

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

// 初始化 cloud
cloud.init({
  // API 调用都保持和云函数当前所在环境一致
  env: cloud.DYNAMIC_CURRENT_ENV
})

/**
 * 这个示例将经自动鉴权过的小程序用户 openid 返回给小程序端
 * 
 * event 参数包含小程序端调用传入的 data
 * 
 */
exports.main = (event, context) => {
  console.log(event)
  console.log(context)

  // 可执行其他自定义逻辑
  // console.log 的内容可以在云开发云函数调用日志查看

  // 获取 WX Context (微信调用上下文),包括 OPENID、APPID、及 UNIONID(需满足 UNIONID 获取条件)等信息
  const wxContext = cloud.getWXContext()

  return {
    event,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
    env: wxContext.ENV,
  }
}

最后用了这个 ↓

// 获取openid
    wx.cloud.callFunction({
      name:'login',
      data:{
      },
      success:res=>{
        console.log(res.result.openid);
        this.setData({
          user_openid: res.result.openid,   
        })
      }
    })
根据引用\[1\]中提供的信息,获取微信小程序openId需要通过调用微信接口路径"https://api.weixin.qq.com/sns/jscode2session"来实现。在前端代码中,需要使用uni.login()方法获取到code值,然后将code值、小程序的appid、secret以及grant_type等参数传递给该接口进行请求。成功获取openId后,可以使用uni.setStorage()方法将openId存储到本地。 引用\[2\]中提到,在小程序发布阶段,直接在前端暴露appid和appsecret是不安全的,因为经过反编译小程序后,这些信息会被获取到。因此,可以考虑使用云函数来获取openId,以增加安全性。 引用\[3\]中提供了一个示例代码,可以在需要获取openId的地方调用getOpenid()方法。在该方法中,使用wx.cloud.callFunction()方法调用云函数来获取openId,并将其存储到全局变量中。 关于报41002的问题,根据提供的信息,无法确定具体的原因。可能是由于参数传递错误、接口调用频率限制或其他原因导致的。建议检查代码中的参数传递是否正确,并确保接口调用符合微信的限制要求。如果问题仍然存在,可以查阅微信开发文档或联系微信开发者支持获取更详细的帮助。 #### 引用[.reference_title] - *1* [uniapp写微信小程序获取openId、unionId](https://blog.csdn.net/m0_56597737/article/details/131274674)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [微信小程序获取用户openid](https://blog.csdn.net/m0_51421744/article/details/127756088)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值