uni-app支付宝小程序授权登录报错,无法获取用户信息,getOpenUserInfo提示未找到授权结果

uni-app支付宝小程序授权登录报错,无法获取用户信息,getOpenUserInfo提示未找到授权结果

错误信息

支付宝小程序登录报错,报错报文:{"currentTarget":{"dataset":{"eventOpts":[["getAuthorize",[["onGetAuthorize",["$event"]]]],["error",[["onAuthError",["$event"]]]]]},"id":"","offsetLeft":129,"offsetTop":54,"tagName":"button"},"detail":{"errorMessage":"未找到授权结果","type":"getAuthorize"},"target":{"dataset":{"eventOpts":[["getAuthorize",[["onGetAuthorize",["$event"]]]],["error",[["onAuthError",["$event"]]]]]},"id":"","offsetLeft":129,"offsetTop":54,"tagName":"button","targetDataset":{"eventOpts":[["getAuthorize",[["onGetAuthorize",["$event"]]]],["error",[["onAuthError",["$event"]]]]]},"errorMessage":"未找到授权结果","type":"getAuthorize"},"timeStamp":1732024610356,"type":"error","mark":{},"mp":{"currentTarget":{"dataset":{"eventOpts":[["getAuthorize",[["onGetAuthorize",["$event"]]]],["error",[["onAuthError",["$event"]]]]]},"id":"","offsetLeft":129,"offsetTop":54,"tagName":"button"},"detail":{"errorMessage":"未找到授权结果","type":"getAuthorize"},"target":{"dataset":{"eventOpts":[["getAuthorize",[["onGetAuthorize",["$event"]]]],["error",[["onAuthError",["$event"]]]]]},"id":"","offsetLeft":129,"offsetTop":54,"tagName":"button","targetDataset":{"eventOpts":[["getAuthorize",[["onGetAuthorize",["$event"]]]],["error",[["onAuthError",["$event"]]]]]}},"timeStamp":1732024610356,"type":"error","mark":{}}

代码

Vue

<button type="default" size="default" open-type="getAuthorize" class="login-btn" scope="userInfo" @getAuthorize="onGetAuthorize" @error="onAuthError">
    登录 / 注册
</button>

JS

onGetAuthorize() {
    console.log('授权登陆开始');
    let _this = this;
    let loginObj = {};
    uni.showLoading({
        title: "登录中..."
    });
    my.getOpenUserInfo({
        fail: res => {
            console.log(res);
        },
        success: res => {
            const userInfo = JSON.parse(res.response).response // 以下方的报文格式解析两层   
            console.log('userInfo', userInfo);
            if (userInfo.code != 10000) {
                return uni.showToast({
                    title: userInfo.msg
                });
            }

            my.getAuthCode({
                scopes: 'auth_base',
                success: (authData) => {
                    loginObj.code = authData.authCode  
                    _this.loginFunc(loginObj) //开始登录  
                }
            });
        },
    });
},
// 授权失败回调
onAuthError(error) {
    console.log('授权错误', JSON.stringify(error))
    uni.showToast({
        title: "授权失败"
    });
}

问题描述

直接走下面的授权失败回调信息,辛苦老师能给解答一下吧,非常感谢。


更多关于uni-app支付宝小程序授权登录报错,无法获取用户信息,getOpenUserInfo提示未找到授权结果的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app支付宝小程序授权登录报错,无法获取用户信息,getOpenUserInfo提示未找到授权结果的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在处理uni-app支付宝小程序授权登录时遇到“无法获取用户信息,getOpenUserInfo提示未找到授权结果”的错误,通常是由于授权流程中的某些环节没有正确处理或配置。下面是一个基本的授权登录流程代码示例,帮助你检查和修正问题。

首先,确保你的支付宝小程序已经在开发者后台配置了相关权限,特别是用户信息的获取权限。

1. 引导用户授权

在用户需要进行登录或获取用户信息的地方,调用my.authorize方法进行授权请求。

// 请求用户授权
my.authorize({
  scope: 'userInfo',
  success: (res) => {
    if (res.authResult === 'allow') {
      // 用户同意授权,继续获取用户信息
      getUserInfo();
    } else {
      // 用户拒绝授权,处理拒绝逻辑
      console.error('用户拒绝授权');
    }
  },
  fail: (err) => {
    // 授权请求失败,处理失败逻辑
    console.error('授权请求失败', err);
  }
});

2. 获取用户信息

在用户同意授权后,调用my.getOpenUserInfo获取用户信息。

function getUserInfo() {
  my.getOpenUserInfo({
    success: (res) => {
      // 成功获取用户信息
      console.log('用户信息', res.response);
      // 可以在这里保存用户信息到本地或服务器
    },
    fail: (err) => {
      // 获取用户信息失败,处理失败逻辑
      console.error('获取用户信息失败', err);
      // 错误处理中,特别注意检查是否因为未找到授权结果导致
      if (err.errMsg === 'getOpenUserInfo:fail no auth result') {
        console.error('未找到授权结果,请确保用户已授权');
      }
    }
  });
}

3. 错误处理与重试机制

在实际应用中,可能需要添加错误处理和重试机制,比如用户拒绝授权后,提示用户授权的重要性,并给出重新授权的入口。

4. 注意事项

  • 确保支付宝小程序客户端版本支持相应的API调用。
  • 检查是否在app.json中正确配置了权限请求。
  • 在调用my.authorizemy.getOpenUserInfo时,确保它们是在用户操作(如点击按钮)后触发的,避免被支付宝小程序的安全机制拦截。

通过上述步骤和代码示例,你应该能够定位并解决“无法获取用户信息,getOpenUserInfo提示未找到授权结果”的问题。如果问题依旧存在,建议检查支付宝小程序的开发者文档,确认是否有最新的API变更或已知问题。

回到顶部