# 权限

部分接口需要经过用户授权同意才能调用。我们把这些接口按使用范围分成多个 scope ,用户选择对 scope 来进行授权,当授权给一个 scope 之后,其对应的所有接口都可以直接使用。

此类接口调用时:

  • 如果用户未接受或拒绝过此权限,会弹窗询问用户,用户点击同意后方可调用接口;
  • 如果用户已授权,可以直接调用接口;
  • 如果用户已拒绝授权,则不会出现弹窗,而是直接进入接口 fail 回调。请开发者兼容用户拒绝授权的场景。

# 获取用户授权设置

开发者可以使用 wx.getSetting 获取用户当前的授权状态。

# 打开设置界面

用户可以在小程序设置界面(「右上角」 - 「关于」 - 「右上角」 - 「设置」)中控制对该小程序的授权状态。

开发者可以调用 wx.openSetting 打开设置界面,引导用户开启授权。

# 提前发起授权请求

开发者可以使用 wx.authorize 在调用需授权 API 之前,提前向用户发起授权请求。

# scope 列表

scope 对应接口 描述
scope.userInfo wx.getUserInfo 用户信息
scope.userLocation wx.getLocation 精确地理位置(将废弃,请使用模糊地理位置来代替)
scope.userFuzzyLocation wx.getFuzzyLocation 模糊地理位置
scope.werun wx.getWeRunData 微信运动步数
scope.writePhotosAlbum wx.saveImageToPhotosAlbum 保存到相册
scope.WxFriendInteraction 对应开放数据域内的 wx.getFriendCloudStoragewx.getGroupCloudStoragewx.getGroupInfowx.getPotentialFriendListwx.getUserCloudStorageKeyswx.getUserInfoGameServerManager.getFriendsStateData 接口,以及主域内的 wx.getUserInteractiveStorage 接口。 是否授权使用你的微信朋友信息
scope.gameClubData wx.getGameClubData 游戏圈加圈、点赞、发表数据

# 授权有效期

一旦用户明确同意或拒绝过授权,其授权关系会记录在后台,直到用户主动删除小程序。

# 最佳实践

在真正需要使用授权接口时,才向用户发起授权申请,并在授权申请中说明清楚要使用该功能的理由。

我们提供了授权相关的代码片段,可以预览代码片段体验如何获取用户信息和使用隐私协议

查看代码片段

# 注意事项

  1. wx.authorize({scope: "scope.userInfo"}),不会弹出授权窗口,请使用 wx.createUserInfoButton
  2. 需要授权 scope.userFuzzyLocation 时必须配置地理位置用途说明
  3. 需授权的接口有涉及用户隐私,注意查阅小游戏《用户隐私保护指引》合规披露指南

# 授权流程图

授权流程图