# 小程序登录流程

更新时间:2023-02-01 14:18:38

小程序可以通过登录获取快手提供的用户身份标识,快速建立小程序内的用户体系。

# 登录时序图

image

# 名词解释

参与方解释:

  • 小程序:第三方介入的小程序(也包括内部小程序)
  • 开发者服务器:小程序的自身服务器
  • 快手小程序平台:小程序团队对小程序提供的接口平台
  • 小程序平台服务端:小程序登录授权相关的服务。

名词定义:

  • open_id : 在同一开发者下唯一标识一个快手用户
  • js_code : 小程序登录时,生成的授权码,用来获取当前登录用户的 open_id 和 session_key
  • session_key : 标识用户当前在小程序的登录态

# 附录1:open api 接口数据解密方式

为了保证重要数据的私密性和完整性,使用了对称解密算法和签名对数据进行了保护。使用有效的 sessionKey 可以对数据进行解密和验签。

  1. 对称解密使用的算法为 AES-128-CBC,数据采用 PKCS#5 填充。
  2. 对称解密的目标密文为 Base64_Decode(encryptedData)。
  3. 对称解密秘钥 aeskey = Base64_Decode(session_key), aeskey 是 16 字节。
  4. 对称解密算法初始向量 为 Base64_Decode(iv),其中 iv 由数据接口返回。
  • 解密
    1. encryptedData(string) --------- Base64_decode ---> encryptedDataBytes(byte[])
    2. encryptedDataBytes(byte[]) --- AES_decrypted ----> plainBytes(byte[])
    3. plainBytes(byte[]) ------------- new String() -------> plainData(string json)
  • 验签
    sha1ToHex(rawData + sessionKey) == signature
Copyright ©2024, All Rights Reserved