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
更多关于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.authorize
和my.getOpenUserInfo
时,确保它们是在用户操作(如点击按钮)后触发的,避免被支付宝小程序的安全机制拦截。
通过上述步骤和代码示例,你应该能够定位并解决“无法获取用户信息,getOpenUserInfo提示未找到授权结果”的问题。如果问题依旧存在,建议检查支付宝小程序的开发者文档,确认是否有最新的API变更或已知问题。