uni-app 在鸿蒙3.0.0手机中无法使用三方登录 如微信和Google
uni-app 在鸿蒙3.0.0手机中无法使用三方登录 如微信和Google
产品分类
uniapp/App
开发环境信息
项目 | 详情 |
---|---|
PC开发环境操作系统 | Windows |
PC开发环境操作系统版本号 | Windows 11 |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 4.45 |
手机系统 | Android |
手机系统版本号 | Android 10 |
手机厂商 | 华为 |
手机机型 | 荣耀9X |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
App下载地址或H5网址
https://appgallery.huawei.com/app/C109866805
示例代码
2025年1月16日补充
uni.getProvider({
service: 'oauth',
success: function(res) {
console.log("============getProvider",res.provider);
}
});
返回日志信息为
============getProvider, [Object] ["google","weixin"]
在鸿蒙3.0.0手机中,无法使用微信三方登录
uni.login({
provider: 'weixin',
success: function (event) {
console.log(event)
},
fail: function (err) {
console.log(err)
}
})
fail日志
{
"errMsg": "login:fail Unable to send",
"errCode": -100,
"code": -100,
"innerCode": -3
}
无法使用Google登录
uni.login({
provider: 'google',
success: function (loginRes) {
// 登录成功
console.log('====== google 登录成功', loginRes)
},
fail: function (err) {
console.log('====== google 登录授权失败', err)
// 登录授权失败
}
})
fail日志
{
"errMsg": "login:fail 12500: ",
"errCode": -1002,
"code": -1002
}
操作步骤
使用代码示例中的代码,直接调取三方登录
预期结果
期望正常获取登录信息
实际结果
{
"errMsg": "login:fail Unable to send",
"errCode": -100,
"code": -100,
"innerCode": -3
}
bug描述
在鸿蒙3.0.0手机中,无法使用三方登录,包括微信和Google
更多关于uni-app 在鸿蒙3.0.0手机中无法使用三方登录 如微信和Google的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
缩小问题范围,是不是鸿蒙 3.0 版本系统限制,对应的安卓版本多少。相同代码其他安卓手机、安卓系统是否正常
更多关于uni-app 在鸿蒙3.0.0手机中无法使用三方登录 如微信和Google的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
其他安卓手机正常,有一台华为mate40pro,系统是鸿蒙3.0.0 ,是正常可拉取授权。
针对uni-app在鸿蒙3.0.0手机上无法使用第三方登录(如微信和Google)的问题,这通常涉及到几个关键方面的处理:鸿蒙系统的适配、第三方SDK的集成与配置、以及权限管理。以下是一个简化的代码案例和配置示例,用于指导如何在uni-app项目中集成和配置微信登录(以微信为例,Google登录类似处理)。
1. 引入微信SDK
首先,确保你的uni-app项目中已经引入了微信的官方SDK。这通常通过npm或yarn安装,但考虑到uni-app的特性,你可能需要手动下载SDK并配置。
# 假设你已经下载了微信SDK并放置在项目的libs目录下
# 在uni-app的manifest.json中配置原生插件
{
"mp-weixin": { // 微信小程序不需要额外配置SDK
// ...
},
"app-plus": {
"distribute": {
"sdkConfigs": [
{
"name": "weixin-sdk", // 自定义SDK名称
"path": "./libs/weixin-sdk" // SDK路径
}
]
}
}
}
2. 配置AndroidManifest.xml(针对鸿蒙适配)
由于鸿蒙系统基于Android,大多数Android的配置仍然适用,但需要注意鸿蒙特有的API变更。在manifest.json
的app-plus
部分配置Android权限和Activity:
"app-plus": {
"distribute": {
"android": {
"permissions": [
"android.permission.INTERNET",
// 其他必要权限...
],
"activities": [
{
"package": "com.tencent.mm.opensdk.ui.WXApiEntryActivity",
// ...其他配置
}
]
}
}
}
3. 初始化微信SDK
在main.js
或合适的生命周期钩子中初始化微信SDK:
if (process.env.PLATFORM === 'app-plus') {
const wx = require('path/to/weixin-sdk'); // 根据实际路径调整
wx.registerApp('your-app-id', function(res) {
if (res.err_msg === "registerApp:ok") {
console.log('微信SDK初始化成功');
} else {
console.error('微信SDK初始化失败', res);
}
});
}
4. 实现登录逻辑
在用户触发登录时,调用微信登录接口:
function loginWithWeChat() {
if (process.env.PLATFORM === 'app-plus') {
wx.login({
success: function(res) {
if (res.code) {
// 发送res.code到服务器换取openId, sessionKey, unionId
} else {
console.error('登录失败!' + res.errMsg);
}
}
});
} else {
// 其他平台登录逻辑
}
}
注意:以上代码仅为示例,实际开发中需根据微信SDK的具体文档和鸿蒙系统的适配指南进行调整。特别是鸿蒙系统可能要求使用特定的API或进行额外的权限声明。对于Google登录,流程类似,但需要使用Google的SDK,并遵循Google的开发者指南进行集成。