微信小游戏一 隐私协议开发指南、用户信息获取

简介

因为微信规则修改了,想要获取新的信息需要阅读微信小游戏的规则,下面👇🏻是最新通知文档,建议认真阅读

阅读官方文档

包含隐私保护需要添加的内容、内容介绍、说明介绍、开发指导、获取用户信息等。同时官方文档有更新都会有说明。时间用不了多久

第一步 需要到微信公众号平台开启隐私设置

第二步:授权开发指南

  1. 用户隐私授权  
  2. 用户信息获取授权

授权的类代码:

/**
 * 流程:用户隐私权授权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);
      }
    );
  }
}

注:比较简单,后续再整理详细的步骤,代码可直接复制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值