• JS API 列表
  • 基础
  • TTML
  • 网络
  • 媒体
  • 地图
  • 文件
  • 数据缓存
  • 地理位置
  • 设备
  • 画布
  • 界面
  • 页面导航
  • 开放接口
  • 登录
  • 用户信息
  • 广告
  • 支付
  • 分享
  • 小程序跳转
  • 抖音视频能力
  • 收货地址
  • 设置
  • 授权
  • 评价能力
  • 数据分析
  • 视频拍摄器
  • 引导关注
  • 订阅消息
  • 电商插件能力(即将废弃)
  • 流量来源识别
  • 隐私信息授权
  • tt.requirePrivacyAuthorize
  • tt.openPrivacyContract
  • tt.onNeedPrivacyAuthorization
  • tt.getPrivacySetting
  • web化
  • 转发和挂载
  • 侧边栏能力
  • 直播能力
  • AI/AR能力
  • 安全能力
  • 行业开放
  • 第三方平台
  • 其它
  • tt.onNeedPrivacyAuthorization

    收藏
    我的收藏

    基础库 3.19.0 开始支持本方法,低版本需做兼容处理,抖音开发者工具 4.2.3 及以上开始支持此能力调试,这是一个同步方法。

    监听隐私接口需要用户授权事件。当需要用户进行隐私授权时会触发。触发该事件时,开发者需要弹出隐私协议说明,并在用户同意或拒绝授权后调用回调接口 resolve 触发原隐私接口或组件继续执行。隐私合规开发指南详情可见 《小程序隐私协议开发指南

    前提条件
    业务背景
    使用限制
    注意事项
    支持沙盒
    相关教程

    语法

    tt.onNeedPrivacyAuthorization(callback)

    参数说明

    callback

    类型默认值必填说明最低支持版本
    function

    隐私接口需要用户授权事件的监听函数

    3.19.0

    callback 是一个回调函数,接收类型参数如下:

    属性名类型说明最低支持版本
    resolvefunction

    隐私授权结果回调接口。​

    当触发 onNeedPrivacyAuthorization 事件时,触发该事件的隐私接口或组件会处于 pending 状态。​

    如果调用 resolve({ buttonId: 'agree-btn', event:'agree' }),则触发当前 onNeedPrivacyAuthorization 事件的原隐私接口或组件会继续执行。其中 buttonId 为隐私同意授权按钮的 id,为确保用户有同意的操作,基础库会检查对应的同意按钮是否被点击过。(Tips: 需要在<button open-type="agreePrivacyAuthorization"> 组件的 bindagreeprivacyauthorization 事件触发后再调用 resolve({ buttonId: 'agree-btn', event:'agree' }))​

    如果调用 resolve({ event: 'disagree' }),则触发当前 onNeedPrivacyAuthorization 事件的原隐私接口或组件会失败并返回 API:fail privacy permission is not authorized 的错误信息。​

    3.19.0
    eventInfoobject

    eventInfo 是 onNeedPrivacyAuthorization 的第二个回调参数,表示触发本次 onNeedPrivacyAuthorization 事件的关联信息​

    3.19.0

    resolve 类型说明

    是一个回调函数,接收类型参数如下:

    属性名类型说明最低支持版本
    paramsobject

    resolve内的参数

    3.19.0

    params 类型说明

    object 类型,属性如下:

    属性名类型说明最低支持版本
    eventenum
    ​用户操作类型​
    3.19.0
    buttonIdstring
    ​同意授权按钮的 id (仅 event=agree 时必填)​
    3.19.0

    event 的合法值

    说明最低支持版本
    agree
    ​用户同意隐私授权​
    3.19.0
    disagree
    ​用户拒绝隐私授权​
    3.19.0

    eventInfo 类型说明

    object 类型,属性如下:

    属性名类型说明最低支持版本
    referrerstring

    ​触发本次 onNeedPrivacyAuthorization 事件的接口或组件名(例如:"getUserProfile", "button-getPhoneNumber")

    3.19.0

    返回值

    扫码体验

    请使用字节宿主APP扫码

    代码示例

    // page.ttml <view class="page-popup" tt:if="{{showPrivacy}}"> <view class="page-popup-content">隐私弹窗内容....</view> <button class="page-popup-footer-button" type="primary" id="agree-btn" open-type="agreePrivacyAuthorization" bindagreeprivacyauthorization="handleAgreePrivacyAuthorization">同意</button> </view>
    Page({ data: { hasLocation: false, showPrivacy: false, }, resolveHandler: [], // 同时调用多个隐私能力时,需提前保留 resolve 回调函数 onLoad() { tt.onNeedPrivacyAuthorization((resolve, eventInfo) => { console.log('eventInfo.referrer:', eventInfo.referrer); this.resolveHandler.push(resolve); this.setData({ showPrivacy: true }); }) }, handleAgreePrivacyAuthorization() { // 用户点击同意按钮后 this.resolveHandler.forEach((_resolve) => { _resolve({ buttonId: 'agree-btn', event: 'agree' }); }); // 用户点击同意后,开发者调用 resolve({ buttonId: 'agree-btn', event: 'agree' }) 告知平台用户已经同意,参数传同意按钮的id。为确保用户有同意的操作,基础库在 resolve 被调用后,会去检查对应的同意按钮有没有被点击过。检查通过后,相关隐私接口会继续调用 // 用户点击拒绝后,开发者调用 resolve({ event:'disagree' }) 告知平台用户已经拒绝 this.setData({ showPrivacy: false }); }, });