快手登录

info 如果开发者需要更新之前已经授权用户的信息,请在用户授权时将 syncUserProfile 设置为 'overwrite'。

登入登出

登入

SDK 提供了快速登录小程序的接口,省去使用快手登录接口时获取 code, session_key 等辅助操作。

建议的登录流程是,通过 ks.BaaS.auth.loginWithKs() 获取用户 openID, 这时无需弹框授权,开发者拿到 openID 可以建立自身的帐号 ID。当必须要获得用户的头像昵称等信息时,才让用户点击 button(open-type="getUserInfo" ),弹框授权。

静默登录

ks.BaaS.auth.loginWithKs(null, { createUser })

该方法会进行简单的登录,不需要用户授权,即不会弹出授权框。但如果 app 中未登录,会弹出登录框。

参数说明

参数
类型
说明

createUser

Boolean

是否创建用户,默认为 true,可选

createUser 参数决定了一个新的用户第一次登录时的服务端处理行为。 默认为 true,服务端会有该用户创建一个知晓云用户记录。 当 createUserfalse 时,服务端会终止登录过程,返回 404 错误码,开发者可根据该返回结果进行多平台账户绑定的处理。详见 多平台用户统一登录 说明

请求示例

// 登录小程序
ks.BaaS.auth.loginWithKs().then(user => {
  // 登录成功
}, err => {
  // 登录失败
})

登录成功返回示例 then 回调中的 user 对象为 currentUser 对象,请参考currentUser 小节

登录失败返回示例

err 对象结构请参考错误码和 HError 对象

设置用户名和邮箱

用户通过快手登录后,可以设置邮箱、用户名、密码,以便下次可以通过用户名或者邮箱登录。

详情请参考 更新用户名更新邮箱

强制登录

ks.BaaS.auth.loginWithKs(data, {createUser, syncUserProfile})

该方法会弹出授权框。如果 app 中未登录,会先弹出登录框。

参数说明

参数
类型
说明

data

object

bindgetuserinfo 事件回调返回的参数

createUser

Boolean

是否创建用户,默认为 true

syncUserProfile

String

是否同步第一层级用户信息,可选值为 overwritesetnxfalse,默认值为setnx

createUser 参数决定了一个新的用户第一次登录时的服务端处理行为。 默认为 true,服务端会有该用户创建一个知晓云用户记录。 当 createUserfalse 时,服务端会终止登录过程,返回 404 错误码,开发者可根据该返回结果进行多平台账户绑定的处理。详见 多平台用户统一登录 说明

{{ userInfoAlert() }}

请求示例

用户同意授权返回示例 then 回调中的 user 对象为 currentUser 对象,请参考currentUser 小节

用户拒绝授权示例 catch 回调中的 HError 对象示例:

其他错误 catch 回调中的 res 对象示例:

res 对象结构请参考错误码和 HError 对象

info ks.BaaS.auth.loginWithKs 默认会检查用户是否已登录,若未登录,该接口默认会先执行登录操作

用户一键授权手机号登录

开发者需要提供按钮的方式,令用户触发授权手机号操作,即可通过加密后的手机号,结合 ks.login() 获取到的 code 进行知晓云快手小程序登录。登录成功后用户表的 phone_verified 字段会更新为 true ,省掉了验证手机号的过程。

ks.BaaS.auth.loginWithKs(data, {code, createUser})

参数说明

参数
类型
说明

data

object

bindgetphonenumber 事件回调返回的参数

code

string

调用 ks.login() 获取的临时登录凭证

createUser

Boolean

是否创建用户,默认为 true

code参数说明:由于在回调中调用 ks.login() 登录,可能会刷新登录态,此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey, 导致解密失败。因此要求开发者提前进行 ks.login()

createUser 参数决定了一个新的快手用户第一次登录时的服务端处理行为。 默认为 true,服务端会为该用户创建一个知晓云用户记录。 当 createUserfalse 时,服务端会终止登录过程,返回 404 错误码,开发者可根据该返回结果进行多平台账户绑定的处理。详见 多平台用户统一登录 说明。

用户点击该按钮时,会触发 ksLogin()获取到临时登录凭证 code,同时弹出授权手机号面板;点击授权面板会触发 phoneNumberHandler() 方法,返回获取到的用户加密手机号信息;开发者需在回调中调用 ks.BaaS.auth.loginWithKs 方法,以使用加密的手机号,结合 ks.login() 获取到的 code 进行知晓云快手小程序登录。

请求示例

用户同意授权返回示例 then 回调中的 user 对象为 currentUser 对象,请参考currentUser 小节

用户拒绝授权示例 catch 回调中的 HError 对象示例:

其他错误 catch 回调中的 res 对象示例:

res 对象结构请参考错误码和 HError 对象

更新用户手机号

开发者需要提供按钮的方式,令用户触发授权手机号操作。更新之后,用户表的 phone_verified 字段会更新为 true ,省掉了验证手机号的过程。

ks.BaaS.auth.updatePhoneNumber(data, {overwrite})

参数说明

参数
类型
说明

data

object

bindgetphonenumber 事件回调返回的参数

overwrite

Boolean

默认为 true。如果设置为 false,用户原本绑定了其他手机号会返回 400 错误

用户点击该按钮时,会返回获取到的用户加密手机号信息,开发者需在回调中调用 ks.BaaS.auth.updatePhoneNumber 方法,以更新用户手机号。

请求示例

用户同意授权返回示例 then 回调中的 user 对象为 currentUser 对象,请参考currentUser 小节

用户拒绝授权示例 catch 回调中的 HError 对象示例:

其他错误 catch 回调中的 res 对象示例:

res 对象结构请参考错误码和 HError 对象

info ks.BaaS.auth.updatePhoneNumber 需要用户已登录,若未登录,该接口会返回 604 错误。

关联快手小程序

UserRecord.linkKs(data, {syncUserProfile})

通过此方法可将通用注册登录用户(在已登录状态下)关联快手小程序账号。

参数说明

参数
类型
说明

data

object

bindgetuserinfo 事件回调返回的参数

syncUserProfile

String

是否同步第一层级用户信息,可选值为 overwritesetnxfalse,默认值为setnx

{{ userInfoAlert() }}

请求示例

  1. 不获取用户信息(静默登录):

  1. 获取用户信息(强制登录):

返回示例

多平台用户统一登录

假设开发者现在同时支持快手小程序和 web 端登录,需要快手小程序新用户关联到已经注册好的用户账户,才能登录成功。 可以通过 loginWithKs 的参数 createUser 设置为 false,此时,服务端会判断该用户是否已经有账户记录, 如果没有,则返回 404 状态码。开发者可根据此状态码,跳转到需要填写用户名密码页面,进行已有账户的关联或新的账户的创建, 完成后,调用 linkKs 方法完成当前快手小程序用户与账户的绑定。下一次用户再次登录时,则会直接登录成功。

示例代码

静默登录时检查

请求用户授权(强制登录)后检查

若已经提前申请了用户授权,也可以在 ks.getUserInfo() 的 success 回调中进行关联账户

Last updated

Was this helpful?