收藏
回答

小程序上线后,打开微信开发者工具,小程序可以正常登录,关闭微信开发者工具,就登录失败了这是怎么回事?

小程序上线后,打开微信开发者工具,小程序可以正常登录,关闭微信开发者工具,就登录失败了。小程序已经上线了的,云函数也上传了,登录云函数也没有日志,好像没成功调用云函数一样。这是什么原因啊 程序如下 'use strict';

const axios = require('axios');    //导入axios​ 常用于与 RESTful API 进行交互,发送 GET、POST、PUT、DELETE 等请求,并处理响应数据

const crypto = require('crypto');  //导入crypto​ 是 Node.js 内置的加密模块,提供了各种加密算法和哈希函数。 //这个在云函数中添加依赖失败,和这个有关系吗?

const buffer = require('buffer');

//const Buffer = buffer.Buffer;

// 微信小程序的 AppID 和 AppSecret

const appId = 'xxxxxxxxxxxxxxxx';

const appSecret = 'xxxxxxxxxxxxxxxxxxx';这是我为了个人隐私处理了


// 获取微信 openid 和 session_key

async function getWechatOpenId(code) {

  const url = `https://api.weixin.qq.com/sns/jscode2session?appid=${appId}&secret=${appSecret}&js_code=${code}&grant_type=authorization_code`;

  const response = await axios.get(url);

  console.log('Response data:', response.data); // 打印响应数据

  console.log('axios', axios.VERSION); // 打印响应数据

  return response.data;

}


// 生成 token

function generateToken(openid) {

  const payload = {

    openid,

    exp: Math.floor(Date.now() / 1000) + (60 * 60 * 24) // 24小时过期

  };

   const secret = appSecret; // 替换为你的密钥

  // const token = crypto.sign('sha256', Buffer.from(JSON.stringify(payload)), secret)//.toString('base64');

  // console.log('generateToken:',token)

  

  const payloadBuffer = Buffer.from(JSON.stringify(payload));

  console.log('payloadBuffer:',payloadBuffer);

  

  const hmac = crypto.createHmac('sha256', secret);//创建一个 HMAC 对象。

  hmac.update(payloadBuffer);   //更新 HMAC 对象的内容。

  const signature = hmac.digest();  //生成最终的 HMAC 签名。


  console.log('signature:',signature);

  const token = signature.toString('base64');//将签名转换为 Base64 格式,以便于传输和存储。

  console.log('token:',token);

  

  return token;

}

 


const db = uniCloud.database()


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

const collection = db.collection('users')

// const {loginRes,nickName,avatarurl,identity_category,balckList,Referral,Referred,

// vip,Redemption_Points,local_openid} =event 

const {loginRes,app_user} = event

const  code = loginRes.code;

console.log("app_user",app_user);


// return '我来到了云函数'+code

  try {

    // 获取微信 openid 和 session_key

    const { openid, session_key } = await getWechatOpenId(code);

// 生成 token

const token = generateToken(openid);

app_user.openid = openid

const res =await collection.where({'app_user.openid': openid}).get()     //查询openid,看服务器是否注册过

// console.log('aaaaaa',res);

if(res.affectedDocs == 0){ //未注册

console.log('该用户没有注册过');

const user_id =await collection.add({

app_user

})

//判断是否携带推荐码,如果有,推荐人积分+20

return {

code: 200,

message: 'The user registration is successful!',

app_user,

user_id

}

}else{           //已经注册过

console.log('该用户注册过');

return {

code: 400,

message: 'User already exists',

app_user,

}

}



  } catch (error) {

    

return error

  }

};


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

2 个回答

  • Mr.Zhao
    Mr.Zhao
    2025-09-15

    在云函数里面用axios?

    2025-09-15
    有用
    回复 2
    • Mr.Zhang
      Mr.Zhang
      2025-09-15
      我是初学者,见笑了大佬。您帮我看看是什么原因吗?上线后无法登录。好奇怪
      2025-09-15
      回复
    • Mr.Zhao
      Mr.Zhao
      2025-09-15回复Mr.Zhang
      我咋看  你代码咋写的 我又不知道
      2025-09-15
      回复
  • 一笑皆春
    一笑皆春
    2025-09-15

    接口请求域名配置了么

    2025-09-15
    有用
    回复 3
    • 一笑皆春
      一笑皆春
      2025-09-15
      微信开发者工具去掉勾选“不校验域名”后重新编译运行看看报不报错
      2025-09-15
      回复
    • Mr.Zhang
      Mr.Zhang
      2025-09-15
      去掉勾选不校验域名重新编译后不报错。接口请求域名https://api.bspapp.com。我使用阿里云,直接配置这个就可以了吧。这样配置还是不行
      2025-09-15
      回复
    • 一笑皆春
      一笑皆春
      2025-09-16回复Mr.Zhang
      那就是用户隐私协议没有添加上与登录有关的隐私接口
      2025-09-16
      回复
登录 后发表内容