uni-app 微信登录无回调

uni-app 微信登录无回调

开发环境 版本号 项目创建方式
Mac 11.6 CLI

示例代码:

//auth 是通过 plus.oauth.getServices 里的 weixin  
auth.authorize(async (r) => {  

  //这里没有执行  
}, (err) => {  

  //这里没有执行  
}, {  
  scope:'snsapi_userinfo',  
  state: 'xxxx'  
})  

更多关于uni-app 微信登录无回调的实战教程也可以访问 https://www.itying.com/category-93-b0.html

11 回复

把 async 去了试试

更多关于uni-app 微信登录无回调的实战教程也可以访问 https://www.itying.com/category-93-b0.html


也试过了 一样的

最新的 328 SDK也测试了,还是不行

回复 天生DR: universal link 配置没变过,之前一直有

回复 appwociao: 你认真看一下 我发的链接 部分plist 参数 改名字了

回复 appwociao: 你先看一下 有什么和新的不一样的地方 改一下

回复 天生DR: 果然可以了 plist 里的 weixinoauth 换成 weixin,然后增加了 UniversalLinks 字段。感谢大佬!

回复 appwociao: 好的 以后遇到问题 先去看一下 相关文档 因为有时候第三方SDK变化 我们需要跟进 并会同步文档

回复 天生DR: 好的感谢!

问题分析:

从你的代码片段来看,你使用的是 plus.oauth 接口,这是 HTML5+ 的原生登录方式。微信登录无回调通常由以下几个原因导致:

  1. 配置问题:这是最常见的原因。微信开放平台的应用配置(AppID、AppSecret)与 uni-app 项目中 manifest.json 的配置不一致。
  2. 签名问题:Android 平台需要确保应用签名正确,且与微信开放平台登记的签名一致。
  3. 回调 URL 问题:iOS 平台需要检查 Universal Links 配置是否正确。
  4. 作用域 scopesnsapi_userinfo 需要用户手动同意授权,而 snsapi_base 为静默授权。确保你申请了正确的权限。

排查步骤:

  1. 检查 manifest.json 配置

    • 打开 manifest.json,在“App 模块配置”中勾选“OAuth(登录授权)”。
    • 在“微信登录”部分,填写正确的微信开放平台 AppID 和 AppSecret。
  2. 检查微信开放平台配置

    • 确保应用已经通过审核(至少“开发阶段”需要)。
    • Android:检查包名和签名 MD5 是否与开放平台登记的一致。可以通过 keytool -list -v -keystore your.keystore 获取签名。
    • iOS:确保 Bundle ID 和 Universal Links 配置正确。
  3. 检查代码逻辑

    • 确保 plus.oauth.getServices 成功获取到了微信服务对象。
    • 在调用 auth.authorize 前,可以先通过 auth.isAuthorized() 检查是否已授权。

代码调整建议:

plus.oauth.getServices((services) => {
  let weixinAuth = services.find(service => service.id === 'weixin');
  if (!weixinAuth) {
    console.error('未获取到微信登录服务');
    return;
  }

  // 检查是否已授权
  weixinAuth.isAuthorized((authorized) => {
    if (authorized) {
      // 已授权,直接获取用户信息
      weixinAuth.getUserInfo((userInfo) => {
        console.log('用户信息:', userInfo);
      });
    } else {
      // 未授权,发起授权
      weixinAuth.authorize((res) => {
        console.log('授权成功:', res);
        // 获取用户信息
        weixinAuth.getUserInfo((userInfo) => {
          console.log('用户信息:', userInfo);
        });
      }, (err) => {
        console.error('授权失败:', err);
      }, {
        scope: 'snsapi_userinfo',
        state: 'xxxx'
      });
    }
  });
}, (err) => {
  console.error('获取服务失败:', err);
});
回到顶部