登录授权流程说明

智能小程序使用 oauth 2.0 进行用户信息授权及管理,本文将详述整个授权过程。

概念介绍

  • oauth 2.0(开放授权):一个开放登录授权标准。用户授权后,第三方智能小程序无需获取用户的用户名和密码就可以访问该用户的信息。
  • code:临时登录凭证(有效期 10 分钟且只能使用一次)。在用户完成对应用的授权后,会生成一个很短时间内有效的授权标识,开发者通过服务端请求,将 code 以及智能小程序的 client_id 和 appSecret 传到开放平台接口,可以获取到 session_key
  • session_key:用户对智能小程序的授权会话的密钥。用户授权后,开发者可以通过百度开放平台获取授权会话的 session_key 对用户数据进行加密签名的密钥。

使用百度授权前准备
需要创建一个智能小程序以获取 client_id(appKey)和 appSecret ,以上两者均从智能小程序开发者后台查看。

流程示意图

以下是智能小程序使用 oauth 2.0 进行授权及获取用户信息的示意图:

登录授权流程说明 - 图1

流程说明

1、 智能小程序在 App 内部运行时使用 swan.getLoginCode() 接口获取授权标识 code
2、 智能小程序通过调用 swan.request授权标识 code发送至开发者服务器
3、 开发者服务器通过授权标识 code获取会话密钥 session_key
4、 智能小程序调用获取用户信息 - button 组件方式获取用户信息;
5、 如果需要使用接口返回的用户信息加密数据,将敏感用户信息加密数据通过 swan.request 发送至开发者服务器进行解密后返回智能小程序,详情参见:用户数据的签名验证和加解密
为了应用自身的数据安全,开发者服务器不应该把会话密钥下发到小程序,也不应该对外提供这个密钥。

Tips:

  1. 当用户完成了授权,且授权会话仍处于有效期时,智能小程序不需要每次都进行前两步,而是可以直接进行第三步获取用户信息。
  2. 要判断当前用户的授权会话是否仍处于有效期,可调用 swan.checkSession() 方法进行判断,详见下载小程序支付 demo