收藏
回答

为什么云开发使用wxacode.getUnlimited接口没权限?

小程序也绑定了云环境,其他支付那些功能都写完了没有问题,就在生成二维码这个地方提示没权限,我也检查了长度没有超出32个字符

我的日志如下:

返回结果

{"success":false,"error":"errCode: -604101 function has no permission to call this API | errMsg: system error: error code: -604101"}


日志

START RequestId: d0024bdd-3d12-4b8b-9a61-b7695bcf85f3


Event RequestId: d0024bdd-3d12-4b8b-9a61-b7695bcf85f3


 


2025-04-04T11:08:00.757Z  生成小程序码失败: CloudSDKError: errCode: -604101 function has no permission to call this API | errMsg: system error: error code: -604101


    at callGeneralOpenAPI (/var/user/node_modules/wx-server-sdk/index.js:487:27)


    at processTicksAndRejections (node:internal/process/task_queues:96:5)


    at async callWXOpenAPI (/var/user/node_modules/wx-server-sdk/index.js:2364:28)


    at async exports.main (/var/user/index.js:12:20) {


  errCode: -604101,


  errMsg: 'system error: error code: -604101'


}


Response RequestId: d0024bdd-3d12-4b8b-9a61-b7695bcf85f3 RetMsg: {"success":false,"error":"errCode: -604101 function has no permission to call this API | errMsg: system error: error code: -604101"}


 


END RequestId: d0024bdd-3d12-4b8b-9a61-b7695bcf85f3


Report RequestId: d0024bdd-3d12-4b8b-9a61-b7695bcf85f3 Duration: 180ms Memory: 256MB MemUsage: 22.613281MB

代码如下:

// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })


// 云函数入口函数
exports.main = async (event, context) => {
  try {
    const wxContext = cloud.getWXContext()
    const openid = event.openid || wxContext.OPENID
    
    // 生成小程序码(简化版)
    const result = await cloud.openapi.wxacode.getUnlimited({
      scene: `i=${openid}`,  // 缩短键名以适应32字符限制
      page: 'pages/index/index', 
      width: 430,  // 使用更大的尺寸便于扫码
      isHyaline: false,  // 不透明背景
      autoColor: false,  // 不使用自动配色
      lineColor: { r: 0, g: 0, b: 0 }  // 黑色线条
    })
    
    // 上传到云存储
    const uploadResult = await cloud.uploadFile({
      cloudPath: `qrcodes/${openid}_${Date.now()}.jpg`,
      fileContent: result.buffer
    })
    
    // 获取临时访问链接
    const fileResult = await cloud.getTempFileURL({
      fileList: [uploadResult.fileID]
    })
    
    return {
      success: true,
      fileID: uploadResult.fileID,
      tempFileURL: fileResult.fileList[0].tempFileURL,
    }
  } catch (error) {
    console.error('生成小程序码失败:', error)
    return {
      success: false,
      error: error.message
    }
  }
}


回答关注问题邀请回答
收藏
登录 后发表内容