uni-app 微信授权登录一直出错

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

uni-app 微信授权登录一直出错

开发环境 版本号 项目创建方式
Windows windows11 HBuilderX

操作步骤:

  • uni.login登录

预期结果:

  • 授权登录成功

实际结果:

{
"errMsg": "login:fail send",
"errCode": -100,
"code": -100,
"innerCode": -6
}

bug描述:

微信授权登录一直失败

uni.login({  
    provider: 'weixin', //使用微信登录  
    onlyAuthorize: true,  
    success: function(loginRes) {  
        console.log(loginRes);  
        console.log(loginRes.authResult);  
        // 存储下openid  
        uni.setStorageSync('openid', loginRes.authResult.openid);  

        // 查询是否已经注册  
        let data = {  
            openid: loginRes.authResult.openid  
        }  
        query_register(data).then(resle => {  
            console.log(resle)  
            // 判断下是否注册了 没有注册跳转认证注册页  
            if (resle.data.data.is_register == false) {  
                uni.navigateTo({  
                    url: '/pages/authentication_info/index'  
                })  
            } else {  
                // app登录  
                let data = {  
                    openid: loginRes.authResult.openid,  
                    push_client_id: that.cid  
                }  
                app_login(data).then(res => {  
                    console.log(res)  
                    if (res.data.code == 200) {  
                        // 判断是否绑定了手机号 没有的话跳转到绑定手机号页面 有则直接登录  
                        if (res.data.data.is_bind == false) {  
                            uni.showToast({  
                                title: '请绑定手机号',  
                                icon: 'none'  
                            });  
                            // 跳转到绑定手机号页面  
                            setTimeout(() => {  
                                uni.navigateTo({  
                                    url: '/pages/login/phone'  
                                })  
                            }, 2000)  
                        } else {  
                            // 直接登录  
                            uni.setStorageSync('isLogin', 1); //用于登录拦截判断  
                            uni.setStorageSync('token', res.data.data.token);  
                            uni.switchTab({  
                                url: '/pages/index/index'  
                            })  
                        }  
                    } else {  
                        uni.showToast({  
                            title: res.data.msg,  
                            icon: 'none'  
                        })  
                    }  
                })  
            }  
        })  

    },  
    fail: function(err) {  
        console.log('失败信息');  
        console.log(err)  
    }  
});
{
    "errMsg": "login:fail send",  
    "errCode": -100,  
    "code": -100,  
    "innerCode": -6  
}

5 回复

是不是隐私政策没更新


这个跟隐私政策也有关系吗

回复 1***@163.com: 兄弟,找到原因了吗

解决了吗兄弟,我也是这个问题

在使用 uni-app 进行微信授权登录时,可能会遇到各种问题。以下是一些常见的问题及其解决方案,帮助你排查和解决问题。

1. 检查 AppID 和 AppSecret

  • 问题:微信授权登录需要正确的 AppIDAppSecret,如果配置错误,会导致授权失败。
  • 解决方案:确保你在微信开放平台注册的应用的 AppIDAppSecret 是正确的,并且在 uni-app 项目中正确配置了这些信息。

2. 检查授权域名

  • 问题:微信授权登录需要在微信开放平台设置授权回调域名,如果域名没有正确配置,会导致授权失败。
  • 解决方案:登录微信开放平台,检查并确保授权回调域名(如 www.yourdomain.com)已经正确配置,并且与你在 uni-app 项目中使用的域名一致。

3. 检查微信开发者工具配置

  • 问题:在微信开发者工具中,如果没有正确配置 AppID,可能会导致授权失败。
  • 解决方案:在微信开发者工具中,确保项目的 AppID 与微信开放平台注册的应用 AppID 一致。

4. 检查授权流程

  • 问题:微信授权登录的流程较为复杂,如果流程中的某个步骤出错,会导致授权失败。
  • 解决方案:确保你按照微信官方文档的授权流程进行操作。通常的流程包括:
    1. 获取用户授权码(code)。
    2. 使用 code 换取 access_tokenopenid
    3. 使用 access_tokenopenid 获取用户信息。

5. 检查网络请求

  • 问题:在获取 code 或换取 access_token 时,网络请求可能会失败。
  • 解决方案:确保网络请求的 URL 和参数正确,并且服务器能够正常响应。你可以使用 uni.request 进行网络请求,并检查返回的结果。

6. 检查 uni-app 插件配置

  • 问题:如果你使用的是 uni-app 的微信登录插件,可能会有配置问题。
  • 解决方案:检查 manifest.json 文件中的微信登录插件配置,确保 AppID 和其他参数正确。

7. 检查用户是否授权

  • 问题:用户可能没有授权登录,或者取消了授权。
  • 解决方案:确保在用户点击登录按钮时,正确调用微信的授权接口,并且用户同意授权。

8. 检查服务器端代码

  • 问题:在获取 access_token 和用户信息时,服务器端代码可能会有问题。
  • 解决方案:检查服务器端代码,确保正确处理微信的返回数据,并且能够正确存储和返回用户信息。

9. 查看错误信息

  • 问题:微信授权登录失败时,通常会有错误信息返回。
  • 解决方案:查看错误信息,并根据错误信息进行排查。常见的错误信息包括:
    • 40029: code 无效。
    • 40163: code 已被使用。
    • 41008: code 缺失。

10. 调试工具

  • 问题:调试时可能会遇到各种问题。
  • 解决方案:使用微信开发者工具的调试功能,查看网络请求和返回结果,帮助你定位问题。

示例代码

以下是一个简单的微信授权登录示例代码:

// 获取微信授权 code
uni.login({
  provider: 'weixin',
  success: function (loginRes) {
    const code = loginRes.code;
    if (code) {
      // 使用 code 换取 access_token 和 openid
      uni.request({
        url: 'https://api.weixin.qq.com/sns/oauth2/access_token',
        data: {
          appid: '你的AppID',
          secret: '你的AppSecret',
          code: code,
          grant_type: 'authorization_code'
        },
        success: function (res) {
          const access_token = res.data.access_token;
          const openid = res.data.openid;
          // 使用 access_token 和 openid 获取用户信息
          uni.request({
            url: 'https://api.weixin.qq.com/sns/userinfo',
            data: {
              access_token: access_token,
              openid: openid
            },
            success: function (userInfoRes) {
              const userInfo = userInfoRes.data;
              console.log('用户信息:', userInfo);
            },
            fail: function (err) {
              console.error('获取用户信息失败:', err);
            }
          });
        },
        fail: function (err) {
          console.error('获取 access_token 失败:', err);
        }
      });
    } else {
      console.error('获取 code 失败');
    }
  },
  fail: function (err) {
    console.error('微信登录失败:', err);
  }
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!