uni-app 在鸿蒙3.0.0手机中无法使用三方登录 如微信和Google

发布于 1周前 作者 nodeper 来自 Uni-App

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

4 回复

缩小问题范围,是不是鸿蒙 3.0 版本系统限制,对应的安卓版本多少。相同代码其他安卓手机、安卓系统是否正常

更多关于uni-app 在鸿蒙3.0.0手机中无法使用三方登录 如微信和Google的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


无法拉起三方登录的这部手机是 honor 9x ,harmonyOS3.0.0.170(C00E160R6P3) ,Android10 Quince Tart( API29).

其他安卓手机正常,有一台华为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.jsonapp-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的开发者指南进行集成。

回到顶部