uni-app ipad下sign in with apple出现fail provider not find
uni-app ipad下sign in with apple出现fail provider not find
| 信息类别 | 详情 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Mac |
| PC版本号 | macOS11.3.1 |
| HBuilderX | 正式版 |
| HBuilderX版本 | 3.1.18 |
| 手机系统 | iOS |
| 手机版本号 | IOS 14 |
| 手机厂商 | 苹果 |
| 手机机型 | ipad |
| 页面类型 | vue |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
操作步骤:
uni.getProvider({
service: 'oauth',
success: function (res){
console.log(res)
}
})
预期结果:
{
"errMsg": "getProvider:ok",
"service": "oauth",
"provider": ["apple"]
}
实际结果:
{
"errMsg": "getProvider:ok",
"service": "oauth",
"provider": ["weixin"]
}
bug描述:
(云打包)ipad下苹果sign in with apple一键登录失败 , 因此没法通过应用审核 , 借了同事的ipad , 测试发现
uni.getProvider({
service: 'oauth',
success: function (res){
console.log(res)
}
})
打印出来,竟然是
{
"errMsg": "getProvider:ok",
"service": "oauth",
"provider": ["weixin"]
}
iphone下是正常的, 但是在ipad的下面uni.getProvider竟然会打印出weixin 。 社区里也搜到同样的问题 , 但是没人回答这么严重的bug

更多关于uni-app ipad下sign in with apple出现fail provider not find的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
在 uni-app 中,uni.getProvider 用于检测当前设备支持的登录服务提供商。根据你的描述,iPad 设备上返回了 ["weixin"] 而非预期的 ["apple"],这通常与 iOS 设备类型和 uni-app 的 OAuth 提供商识别逻辑有关。
问题分析:
- 设备类型识别差异:uni-app 的 OAuth 服务提供商检测可能基于设备型号或系统参数。iPad 虽然运行 iOS,但部分逻辑可能将其识别为“非 iPhone 设备”,导致 Apple 登录提供商未被正确识别。
- 配置或兼容性问题:Apple 登录(Sign in with Apple)要求应用配置特定的 Capabilities(如
Sign in with Apple能力),并在 Apple 开发者后台启用。若配置不完整或打包时未适配 iPad,可能导致提供商列表异常。 - uni-app 底层实现限制:uni-app 的 OAuth 模块在 iOS 端依赖原生 SDK,可能对 iPad 的设备特性支持不完善,尤其是在识别登录提供商时出现偏差。
解决建议:
- 检查项目配置:确保在 HBuilderX 中正确勾选了 Apple 登录能力(manifest.json → App SDK 配置 → OAuth 登录 → 勾选“Apple”),并确认 Apple 开发者后台已为 App ID 启用 Sign in with Apple 功能。
- 测试设备条件:Apple 登录要求设备系统为 iOS 13+ 且装有 Apple ID。确认测试 iPad 系统版本符合要求,且已登录有效的 Apple ID。
- 临时处理方案:若急需通过审核,可在代码中主动判断设备类型。若为 iPad,直接调用 Apple 登录 API(如
uni.login指定 provider 为apple),跳过getProvider检测。示例:// 根据设备类型强制使用 Apple 登录(需自行判断 iPad) uni.login({ provider: 'apple', success: (res) => { /* 处理登录结果 */ } });


