授权唤起方式
唤起方式 | 组合授权 | 备注 |
wv.authorize | 全局支持 |
|
wv.getAuthCode | 全局支持 |
|
wv.authorize 用户设备信息授权流程
前提条件
APP开发者初始化sdk时在EMASMiniAppInitConfig;MiniAppInitConfig类中设置needAuthFromApp为true。
接入准备
小程序调用设备信息相关的 API(如WVLocation.getLocation、WVVideo.chooseVideo)时,APP需要弹出授权提示框,由用户决定是否授权给当前小程序。小程序开发者可通过 wv.getSetting 获取当前小程序的授权状况。
使用需要授权的 API 时,需要用户在两个层次上完成授权:1,在APP内授权给小程序;2,在系统级别开启对应功能并授权给APP。
两层授权状态相互独立。如果小程序已经获得了使用某项设备信息的用户授权,但App还没有获得对应的系统权限,小程序调用 API 时,容器会自动触发系统弹窗与用户确认是否授权给App,小程序也可以通过 WVUIDialog.showAuthGuide API 来引导用户去系统设置页面给 App 开启系统权限。
小程序授权相关的逻辑
在用户未对小程序授权的情况下,小程序调用需要权限的 API,需要先调用wv.authorize, App会向用户弹出授权提示框:
如果用户同意,小程序便可以继续调用设备信息获取的 API 执行,且后续该 API 调用时不会再弹出授权提示框;
如果用户拒绝,将直接触发 fail 回调,提示用户取消授权;后续再调用 API 时,还会向用户弹出授权提示框;
建议小程序开发者在调用需要用户授权的 API 前,先调用 wv.getSetting 方法查询小程序的用户授权状态,如果未获得用户授权则调用 wv.authorize方法,最后再调用需要授权的API。
系统级权限相关的逻辑
如果某个 API 所需的特定权限,用户并未在系统中开启或者未授权给App,那么即使用户同意将该权限授权给当前小程序,API 的调用仍会失败。一般来说,小程序对该 API 的首次调用也会触发APP向系统申请权限,用户会看到相应的授权提示或者引导界面;用户拒绝并勾选'不再询问',则可能直接触发 fail 回调, 小程序开发者可以通过调用 WVUIDialog.showAuthGuide拉起系统权限设置页面,引导用户手动开启权限。
wv.getAuthCode 用户个人信息授权流程
wv.getAuthCode 引导用户授权其个人信息给当前小程序(如用户姓名、联系方式),会弹出授权引导浮窗。建议在用户充分了解小程序的业务内容后,小程序再调用wv.getAuthCode,避免在小程序首屏调用 wv.getAuthCode,损害用户体验。
通过 wv.getAuthCode 所取得的代表用户授权的授权码(authCode),后续需由小程序服务端使用,向平台换取实际用户个人信息(如user_id、头像、昵称、手机号、地区、性别、出生日期等)。
阿里云 SuperApp 应用开放平台提供了 wv.getAuthCode 的 API 标准定义,但由于平台自身不掌握客户 SuperApp 的用户信息,所以该 API 的实现需要由 SuperApp 的开发者完成,实现方案可以参考:SuperApp技术标准实现最佳实践。
scope管控
一个scope表示开发者需要请求用户授权的权限范围。
权限管控scope录入。
敏感信息相关的scope需要用户主动发起授权,而非后台触发授权弹窗。
scopes | 对应接口 | 含义 | 唤起方式 |
USER_ID | - | 授权获取App用户的唯一标识(user_id)。此方式为静默授权,不会弹出授权浮窗。 | 授权API:wv.getAuthCode |
USER_NICKNAME | - | 授权获取App用户的昵称。 | |
USER_NAME | - | 授权获取App用户的名称。 | |
USER_LOGIN_ID | - | 授权获取App用户的登录ID。 | |
HASH_LOGIN_ID | - | 授权获取App用户登录ID的hash值。 | |
USER_AVATAR | - | 授权获取App用户的头像。 | |
USER_GENDER | - | 授权获取App用户的性别。 | |
USER_BIRTHDAY | - | 授权获取App用户的生日。 | |
USER_NATIONALITY | - | 授权获取App用户的国籍。 | |
USER_CONTACTINFO | - | 授权获取App用户的联系方式。 | |
auth_base | - | 授权获取App用户的唯一标识(user_id)。此方式为静默授权,不会弹出授权浮窗。 | |
auth_user | - | 授权获取App账户信息。 | |
location | 地理位置授权 | 授权API:wv.authorize | |
camera | 相机授权 | ||
bluetooth | WVBluetooth涉及所有方法 | 蓝牙授权 | |
album | 相册授权 | ||
contacts | WVContacts涉及所有方法 | 通讯录授权 | |
microphone | 麦克风授权 | ||
file | 文件授权 | ||
call | 电话授权 | ||
vibrate | 震动授权 | ||
screen | 截屏授权 |