简介
因为微信规则修改了,想要获取新的信息需要阅读微信小游戏的规则,下面👇🏻是最新通知文档,建议认真阅读。
阅读官方文档
- 官方隐私授权相关的API链接:wx.requirePrivacyAuthorize(Object object) | 微信开放文档
- 官方相关的隐私说明、配置、开发指南:用户隐私保护指引填写说明 | 微信开放文档
- 官方用户信息获取API链接:wx.getUserInfo(Object object) | 微信开放文档
包含隐私保护需要添加的内容、内容介绍、说明介绍、开发指导、获取用户信息等。同时官方文档有更新都会有说明。时间用不了多久
第一步 需要到微信公众号平台开启隐私设置
第二步:授权开发指南
- 用户隐私授权
- 用户信息获取授权
授权的类代码:
/**
* 流程:用户隐私权授权1=》2。接着用户信息读取授权3=》4
* 相关API
* 1,wx.getPrivacySetting 查询是否有需要用户授权的隐私政策信息。如果有可在res的needAuthorization字段是true(头像,昵称都算隐私)
* 2,wx.requirePrivacyAuthorize 弹出授权窗口
* 3,wx.getSetting 检查授权状态
* 4,wx.getUserInfo 获取用户信息
*
*/
export default class WXAuthorization {
static getPrivacySetting() {
return new Promise((resolve, reject) => {
wx.getPrivacySetting({
success: (res) => {
console.log(res); // 返回结果为: res = { needAuthorization: true/false, privacyContractName: '《xxx隐私保护指引》' }
if (res.needAuthorization) {
reject(res.needAuthorization);
} else {
// 用户已经同意过隐私协议,所以不需要再弹出隐私协议,也能调用已声明过的隐私接口
resolve(res);
// wx.chooseMedia()
// wx.getClipboardData()
// wx.startRecord()
}
},
fail: () => {},
complete: () => {},
});
});
}
static requirePrivacyAuthorize() {
return new Promise((resolve, reject) => {
// 需要弹出隐私协议
if (wx.requirePrivacyAuthorize) {
wx.requirePrivacyAuthorize({
success: (res) => {
// 用户同意授权
console.log('用户同意授权', res);
resolve(res);
},
fail: (err) => {
console.log('用户拒绝授权', err);
reject(err);
}, // 用户拒绝授权
complete: () => {},
});
}
});
}
/**
* 查看是否授权
* @returns
*/
static getSetting() {
return new Promise((resolve, reject) => {
wx.getSetting({
success: function (res) {
console.log(res);
if (res.authSetting['scope.userInfo']) {
console.log('已经授权,直接获取用户信息');
// 已经授权,可以直接调用 getUserInfo 获取头像昵称
resolve(res);
} else {
reject(res);
}
},
fail: function (err) {
console.log('查看授权状态失败:', err.errMsg);
reject(err.errMsg);
},
});
});
}
/**
* 获取用户信息,第一次授权后才能使用
* @returns
*/
static getUserInfo(): Promise<string | object> {
return new Promise((resolve, reject) => {
wx.getUserInfo({
success: function (res) {
resolve(res);
},
fail: (err) => {
console.log('获取用户信息失败:', err.errMsg);
reject(err.errMsg);
},
});
});
}
/**
* 创建不可见的全屏按钮授权按钮
*/
static createUserInfoButton() {
return new Promise((resolve, reject) => {
const size = cc.director.getWinSize();
let btn = wx.createUserInfoButton({
text: '',
style: {
left: 0,
top: 0,
width: size.width,
height: size.height,
},
});
//@ts-ignore
btn.onTap((res) => {
if (res.errMsg === 'getUserInfo:ok') {
resolve(res);
//@ts-ignore
btn.hide();
} else {
reject(res.errMsg);
}
});
//@ts-ignore
btn.show();
});
}
}
第三步 调用 直接给代码
/**
* 使用案例
*/
import WXAuthorization from './WXAuthorization';
const { ccclass, property } = cc._decorator;
@ccclass
export default class Example extends cc.Component {
protected onLoad() {
this.wxPrivacyAuthorized();
}
//授权用户隐私权限
private wxPrivacyAuthorized() {
WXAuthorization.getPrivacySetting().then(
() => {
console.log('已授权');
this.getUserInfo();
},
() => {
console.log('未授权');
WXAuthorization.requirePrivacyAuthorize().then(
() => {
this.getUserInfoAuthorized();
},
() => {
this.createUserInfoButton();
}
);
}
);
}
private getUserInfoAuthorized() {
WXAuthorization.getSetting().then(
() => {
console.log('直接获取用户信息');
this.getUserInfo();
},
(err) => {
console.log('创建授权按钮', err);
this.createUserInfoButton();
}
);
}
private createUserInfoButton() {
WXAuthorization.createUserInfoButton().then(
(res) => {
console.log(res);
},
(err) => {
console.log(err);
}
);
}
private getUserInfo() {
WXAuthorization.getUserInfo().then(
(res) => {
console.log(res);
},
(err) => {
console.log(err);
}
);
}
}
注:比较简单,后续再整理详细的步骤,代码可直接复制