收藏
回答

在APP启动的时候调用getSetting提示4001错误?

我在store中定义了checkUserSubscription的方法,并在app.vue中的on launch进行调用。但是报错

//错误信息
{errMsg: "getSetting:fail invalid credential, access_token is invalid or not latest", err_code: 40001}
errMsg"getSetting:fail invalid credential, access_token is invalid or not latest"
err_code40001


//store/modules/subscription.js
checkUserSubscription({
		state,
		dispatch
	}) {
		console.log('开始检查用户订阅状态...');
		return new Promise((resolve, reject) => {
			wx.getSetting({
				withSubscriptions: true,
				success: (res) => {
					console.log('获取用户订阅设置成功:', res);
					if (res.subscriptionsSetting.mainSwitch) {
						let needSubscribe = false;


						state.subscriptionTemplates.forEach((id) => {
							if (
								!res.subscriptionsSetting.itemSettings ||
								!res.subscriptionsSetting.itemSettings[id] ||
								res.subscriptionsSetting.itemSettings[id] !== 'accept'
							) {
								console.log(`模板 ${id} 未订阅或未接受`);
								needSubscribe = true;
							}
						});


						if (needSubscribe) {
							console.log('存在未订阅的模板,开始请求订阅...');
							dispatch('requestSubscription', state.subscriptionTemplates)
								.then(resolve)
								.catch(reject);
						} else {
							console.log('所有模板均已订阅,无需重复订阅');
							resolve();
						}
					} else {
						console.log('用户关闭了订阅消息总开关,提示用户打开设置');
						wx.openSetting({
							withSubscriptions: true,
							success: () => {
								console.log('用户已打开订阅设置页面');
							},
							fail: (err) => {
								console.error('打开订阅设置页面失败:', err);
								reject(err);
							},
						});
					}
				},
				fail: (err) => {
					console.error('获取用户订阅设置失败:', err);
					reject(err);
				},
			});
		});
	},


//这是定义在app.vue中的方法,并在onLaunch中进行调用
async loadData() {
				// 我设置了延迟查询也报错
				setTimeout(() => {
					this.$store.dispatch('subscription/querySubscription') // 使用命名空间调用
						.then(() => {
							console.log('订阅查询成功');
						})
						.catch((error) => {
							console.error('订阅查询失败:', error);
						});
				}, 10000);


回答关注问题邀请回答
收藏

1 个回答

登录 后发表内容