uni-app 真机上无法调用云端云函数

uni-app 真机上无法调用云端云函数

产品分类

uniapp/App

示例代码

login(){
uni.login({
provider: 'univerify',
univerifyStyle: {
"fullScreen": false, // 是否全屏显示,true表示全屏模式,false表示非全屏模式,默认值为false。
"backgroundColor": "#ffffff", // 授权页面背景颜色,默认值:#ffffff
"phoneNum": {
"color": "#000000", // 手机号文字颜色 默认值:#000000
},
"slogan": {
"color": "#8a8b90", //  slogan 字体颜色 默认值:#8a8b90
},
"icon": {
"path": "static/logo.png" // 自定义显示在授权框中的logo,仅支持本地图片 默认显示App logo
},
"authButton": {
"normalColor": "#3479f5", // 授权按钮正常状态背景颜色 默认值:#3479f5
"highlightColor": "#2861c5", // 授权按钮按下状态背景颜色 默认值:#2861c5(仅ios支持)
"disabledColor": "#73aaf5", // 授权按钮不可点击时背景颜色 默认值:#73aaf5(仅ios支持)
"textColor": "#ffffff", // 授权按钮文字颜色 默认值:#ffffff
"title": "本机号码一键登录" // 授权按钮文案 默认值:“本机号码一键登录”
},
"otherLoginButton": {
"visible": "false", // 是否显示其他登录按钮,默认值:true
},
},
success: (res) => {
console.log(JSON.stringify(res) )
uniCloud.callFunction({
name: 'getPhoneNumber',
data: {
access_token: res.authResult.access_token,
openid: res.authResult.openid
}
}).then(dataRes => {
console.log(dataRes)
uni.showToast({
title: `当前手机号为:${dataRes.result.phoneNumber}`,
icon: "none"
})
}).catch(err => {
console.log('云函数报错', err)
})
uni.showToast({
title: res.authResult,
icon: "none"
})
uni.closeAuthView() //关闭一键登录弹出窗口
},
fail(res) { // 登录失败
uni.closeAuthView() //关闭一键登录弹出窗口
console.log(JSON.stringify(res));
console.log('失败')
},
})
}

操作步骤

点击按钮方法,弹出一键登录页面,获取手机号登录,但是后续的callfuncation 方法无法调用。

预期结果

获取到手机号

实际结果

当前客户端和HBuilderX不在同一局域网下(或其他网络原因无法连接HBuilderX),uniCloud本地调试服务不对当前客户端生效。

  • 如果不使用uniCloud本地调试服务,请直接忽略此信息。
  • 如需使用uniCloud本地调试服务,请将客户端与主机连接到同一局域网下并重新运行到客户端。
  • 如果在HBuilderX开启的状态下切换过网络环境,请重启HBuilderX后再试
  • 检查系统防火墙是否拦截了HBuilderX自带的nodejs
  • 检查是否错误的使用拦截器修改uni.request方法的参数
    11:02:12.432 连接本地调试服务失败,请检查客户端是否和主机在同一局域网下
    11:02:12.432 云函数报错, Error: 连接本地调试服务失败,请检查客户端是否和主机在同一局域网下

bug描述

用基座在手机上调试无法获取到手机号码,手机号弹出可以,但是无法调用云函数中的方法,本地可以用json参数调用成功

开发环境及版本信息

项目创建方式 PC开发环境操作系统 PC开发环境操作系统版本号 HBuilderX类型 HBuilderX版本号 手机系统 手机系统版本号 手机厂商 手机机型 页面类型 vue版本 打包方式
HBuilderX Windows win10 正式 3.99 Android Android 11 小米 MXI 2S vue vue2 云端

更多关于uni-app 真机上无法调用云端云函数的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

后面这个问题有解决掉吗?

更多关于uni-app 真机上无法调用云端云函数的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在uni-app中,如果在真机上无法调用云端云函数,通常是由于几个常见的问题导致的,比如权限配置、网络请求设置、云函数部署状态等。以下是一些检查和解决的代码案例,帮助你定位并解决问题。

1. 检查云函数权限配置

确保云函数的权限配置正确,允许uni-app的客户端调用。在云开发控制台中,检查云函数的触发方式是否包含“小程序/H5端调用”。

2. 检查uni-app项目配置

manifest.json中,确保已经配置了云函数的相关信息:

{
  "mp-weixin": {
    "cloudfunctionRoot": "cloudfunctions/",
    "setting": {
      "urlCheck": false
    }
  }
}

3. 调用云函数的代码示例

确保你的调用代码正确。以下是一个调用云函数的示例:

// 引入云开发SDK
const cloud = require('wx-server-sdk');
cloud.init({
  env: 'your-env-id', // 填写你的云开发环境ID
  traceUser: true,
});

// 调用云函数
uni.cloud.callFunction({
  name: 'yourCloudFunctionName', // 云函数名称
  data: {
    // 传递给云函数的参数
    param1: 'value1',
    param2: 'value2'
  },
  success: res => {
    console.log('云函数调用成功', res.result);
  },
  fail: err => {
    console.error('云函数调用失败', err);
  }
});

4. 检查网络请求

确保真机的网络请求没有被阻塞。在某些情况下,真机的网络请求可能因为防火墙、代理设置等原因被阻止。

5. 云函数部署状态

在云开发控制台中检查云函数的部署状态,确保云函数已经正确部署并处于可用状态。

6. 日志输出

在云函数和客户端代码中增加日志输出,以便更好地追踪问题。在云函数中,可以使用console.log输出日志;在客户端,同样可以通过console.loguni.showToast等方式输出日志或提示信息。

7. 清理缓存

有时候,清理uni-app的缓存和重新编译项目可以解决一些莫名其妙的问题。可以尝试清理项目缓存并重新运行。

通过上述步骤和代码示例,你应该能够定位并解决在uni-app真机上无法调用云端云函数的问题。如果问题仍然存在,建议详细检查控制台输出的错误信息,以便进一步分析。

回到顶部