SDK for Node.js
Node SDK 用于 Node 环境下,可以用于管理用户池中所有用户,拥有全部操作权限。
请注意 SDK for JavaScript 与 SDK for Node.js 接口存在差异,请根据需求选择 SDK。
Github:https://github.com/Authing/authing.js。
安装
NPM
当构建大规模应用时,我们推荐使用 npm 进行安装。
# latest stable
$ npm install authing-js-sdk --save初始化
先从 Authing 控制台 中 获取用户池 ID 和 Secret。
初始化代码:
const Authing = require('authing-js-sdk');
const auth = new Authing({
userPoolId: 'your_userpool_id',
secret: 'your_userpool_secret'
});
// 初始化之后可以直接使用相关代码
auth.register({...}).then((info) => {
});
auth.login({...}).then((info) => {
});也可以通过用户池管理员的 token 初始化,获得此用户池管理员的权限,之后可以操作用户池中的所有用户,例如获取任意用户池中用户的信息。
accessToken
用户池管理员 token
示例
其他参数
preflight
是否开启网络状况预检,默认为 false。此参数适用于检查用户的网络是否屏蔽了 authing.cn 这个域名(某些企业的内网会屏蔽这个域名),检查成功不进行任何通知,检查失败后会调用传入的错误处理函数。执行预检之后会导致 SDK 初始化速度变慢,请谨慎使用。
cdnPreflight
是否开启 CDN 网络状况预检,默认为 false。此参数适用于检查用户的网络是否可以访问七牛云 CDN(某些开了代理的场景下无法访问),检查成功不进行任何通知,检查失败后会调用传入的错误处理函数。执行 CDN 预检之后会导致 SDK 初始化速度变慢,请谨慎使用。
timeout
超时时间,默认为 10000 毫秒(10 秒)。
passwordEncPublicKey
PEM 格式密码加密公钥,默认为 Authing 官方的加密公钥。私有化部署用户需要传入自己的加密公钥。
onInitError,
function(err) {}错误处理函数,用于处理初始化失败错误、预检错误。
使用
Authing SDK 的所有 API 都支持 Promise。
如果你使用 ES6+ 推荐用 await 处理异步,示例如下:
异常捕获
所有失败的操作,都需要使用 try catch 捕获异常。操作失败有两种情况:
网络请求出错,常见情况包括:传递参数不合法,这会被 GraphQL 过滤层直接拦截;网络无法连接。
业务逻辑出错,常见情况包括:密码不正确,删除某资源传递的 id 不存在等。
为了方便开发者快速定位出错原因,我们提供一个 formatError 函数:
示例如下:
注册
Authing.register(options)
参数:
{Object} optionsemail
password
unionid,若不使用 email 和 password 则 unionid 必选
oauth 可选,oauth 信息的字符串,或者其他自定义的用户字段都可以以 JSON 字符串的形式存在这里
username,可选,用户名
phone,可选,手机号
nickname,可选,昵称
company,可选,公司名称
photo,可选,用户头像
lastIP,可选,用户登录的 IP 地址
signedUp
{JS Date Object},可选,注册时间lastLogin
{JS Date Object},可选,上次登录时间
使用方法:
返回数据:
登录
Authing.login(options)
参数:
{Object} optionsemail
password
unionid,若不使用 email 和 password 则 unioinid 必选
verifyCode,可选,频繁注册时会要求输入验证码,返回数据会包含
MFACode,可选,如果用户开启了 MFA 会要求输入 6 位动态口令,返回数据会出现 1635 错误代码
lastIP,可选,若连续出现验证码验证失败情况,请将客户端 IP 填入
使用方法:
返回数据:
使用 ODIC 登录
Authing.loginByOidc(option)
参数:
{object} optionsclient_id 必填 (必填)OIDC 应用 ID
client_secret (必填)OIDC 应用 Secret
email (必填) 用户 Email
password (必填) 用户密码
刷新 OIDC Token
Authing.refreshOidcToken(options)
参数:
{Object} optionsclient_id OIDC 应用 id
client_secret OIDC 应用 secret
refresh_token 要刷新的 Token
AuthingToken 换 OIDC Token
需要先在控制台 > 第三方登录 > OIDC 应用,授权模式中勾选 authingToken。
Authing.authingTokenToOidcToken(options)
参数:
{Object} optionsclient_id,OIDC 应用 id
client_secret,OIDC 应用 secret
authingToken,Authing Token
返回数据:
请求成功
请求失败
发送手机验证码
此接口可结合使用手机验证码登录使用。
Authing.getVerificationCode(phone)
参数:
{String} phone手机号
使用方法:
返回数据:
短信模版
【Authing】{S8} 是你的验证码,有效时间为 {S2} 分钟。如非本人操作请忽略。
使用手机验证码登录
Authing.loginByPhoneCode(options)
参数:
{Object} optionsphone,必填,手机号
phoneCode,必填,使用发送短信接口获取
使用方法:
返回数据:
检测手机号验证码是否正确
Authing.verifyPhoneCode(options)
参数:
{Object} optionsphone,必填,手机号
phoneCode,必填,使用发送短信接口获取
使用方法:
返回数据
使用手机号注册
1. 发送验证码 Authing.sendRegisterPhoneCode(phone)
2. 调用接口注册 Authing.register(options)
参数:
{Object} optionsphone 手机号
phoneCode 使用步骤一中的发送短信接口获取
password 可选,密码
使用手机号密码登录
Authing.loginByPhonePassword(options)
参数:
{Object} options
phone,必填,手机号
password,必填,密码
使用方法:
返回数据:
使用 AD 登录
Active Directory 的连接流程请参考:
接入 Active DirectoryAuthing.loginByAd(options)
参数:
{Object} optionsusername,必传,在 Active Directory 服务中的用户名,必须是username@domain.com或domain\username形式。password,必传,AD 域用户密码。adConnectorId,必传,AD Connector ID,可以在控制台 > 第三方登录 > Active Directory 获得。
使用方法:
返回数据:
使用 LDAP 登录
LDAP 服务的配置流程请参考配置 LDAP 服务。
Authing.loginByLDAP(options)
参数:
{Object} optionsusername,在 LDAP 服务中的登录名,可以是邮箱或用户名password,在 LDAP 服务中的密码
使用方法:
返回数据:
验证用户 Token
Authing.checkLoginStatus(token)
参数:
token {String},必填,Authing 签发的用户 token
使用方法:
返回数据:
若 Token 合法,则返回数据为:
当 status 为 false 时,有三种情况,分别返回:
刷新用户 Token
Authing.refreshToken(options)
参数:
{Object} optionsuser,必填,用户的 _id
使用方法:
返回数据:
刷新用户三方 Token
Authing.refreshThirdPartyToken(userId)
此接口用于刷新用户在社会化登录时产生的 access_token。例如使用 QQ 登录后的 access_token,可用于调用 QQ 相关业务接口。
参数:
{String} userId必填,用户的 _id
使用方法:
返回数据:
退出
Authing.logout(uid)
参数:
{String} uid,必填,用户的 _id
使用方法:
返回数据:
退出 SSO
如果你使用了 OAuth、OIDC 或 SAML 实现了单点登录,那么使用户退出登录需要跳转到一个 URL:
https://<你的域名>.authing.cn/login/profile/logout?app_id=<OAuth 应用 ID>&redirect_uri=<退出之后的回调地址>
其中 app_id 和 redirect_uri 都是必填选项,redirect_uri 是退出后你想要返回的地址。
管理用户权限
配置用户权限老版权限控制(deprecated)获取单个用户资料
Authing.user(options)
除 Authing 用户信息外,thirdPartyIdentity 字段包含用户在第三方社会化登录时产生的 access_token,可用于调用第三方相关业务接口。
参数:
{Object} optionsid,必填,用户的 _id
使用方法:
返回数据:
一次性获取多个用户的资料
Authing.userPatch(options)
参数:
{Object} optionsids
要获取的用户 id 列表,使用逗号分割,不要出现多余的空格;如果使用非法 id 查询时系统会自动忽略。
使用方法:
返回数据:
获取用户列表
Authing.list(page, count)
参数:
{Number} pageDefault:
1
{Number} countDefault:
10
使用方法:
返回数据:
删除用户
Authing.remove(uid)
参数:
{String} uid
使用方法:
返回数据:
修改密码
Authing.update(options)
参数:
{Object} optionspassword:
{String},必填,用户新密码oldPassword:
{String},选填,用户原始密码
使用方法:
返回数据:
修改用户资料
若使用 JavaScript 调用,需要使用 then().catch() 捕获结果和错误。
Authing.update(options)
此接口可以用来修改密码、昵称、头像等各种用户信息
参数:
{Object} options_id
{String} 必填email
{String},选填emailVerified:
{Boolean},选填,邮箱是否经过验证username:
{String},选填nickname:
{String},选填company:
{String},选填phone:
{String},选填oauth:
{String},选填,oauth 信息photo:
{String || file object},选填,用户头像browser:
{String},选填,用户注册时所用的浏览器password:
{String},选填,用户密码oldPassword:
{String}(当有 password 时,旧密码参数必需填写)token:
{String},选填tokenExpiredAt:
{String},选填,token 过期时间loginsCount:
{Number},选填,登录次数lastLogin:
{String},选填,最后登录时间lastIP:
{String},选填,最后登录 IPsignedUp:
{String},选填,注册时间blocked:
{Boolean},选填,是否被锁定isDeleted:
{Boolean},选填,是否被删除
使用方法:
返回数据:
修改邮箱
如果用户已经绑定了邮箱,默认情况下,需要同时验证原有邮箱(目前账号绑定的邮箱)和当前邮箱(将要绑定的邮箱)。也就是说,用户 A 当前绑定的邮箱为 123456@qq.com,想修改为 1234567@qq.com,那么就需要同时验证这两个邮箱。
开发者也可以选择不开启 “验证原有邮箱“ ,可以在 Authing 控制台 的 基础配置 - 基础设置 页面的安全设置模块进行关闭。如下图所示:

验证码通过的 sendChangeEmailVerifyCode 接口发送。
Authing.updateEmail(options)
参数:
{Object} options
email : 当前邮箱,必填。
emailCode: 当前邮箱验证码,必填。
oldEmail:原有邮箱,选填。
oldEmailCode: 原有邮箱验证码,选填。
使用方法
返回数据:最新的用户信息
发送修改邮箱验证码
开发者可以在 消息服务 - 邮件模版 中设置邮件模板,默认的邮件如下图所示:

开发者可以自定义 CSS 样式、主题等。
注意:如果请求发送的邮箱已经注册过了,会提示 “该邮箱已绑定,请换一个吧“ 错误。
Authing.sendChangeEmailVerifyCode(options)
参数:
{Object} optionsemail
使用方法
返回数据
成功示例
失败示例:
修改手机号
和修改邮箱一样,默认情况下,如果用户当前已经绑定了手机号,需要同时验证原有手机号(目前账号绑定的手机号)和当前邮箱(将要绑定的手机号)。也就是说,用户 A 当前绑定的手机号为 15888888888,想修改为 15899999999,那么就需要同时验证这两个手机号。
开发者也可以选择不开启 “验证原有手机号“ ,可以在 Authing 控制台 的 基础配置 - 基础设置 页面的安全设置模块进行关闭。如下图所示:

手机号短信验证码通过 getVerificationCode 接口发送。
Authing.updatePhone(options)
参数:
{Object} options
phone : 当前手机号,必填。
phoneCode: 当前手机号短信验证码,必填。
oldPhone:原有手机号,选填。
oldPhoneCode: 原有手机号短信验证码,选填。
使用方法
返回数据:最新的用户信息。
重置密码
1. 发送验证码 Authing.sendResetPasswordEmail(options)
参数:
{Object} optionsemail
使用方法:
返回数据:
2. 验证验证码 Authing.verifyResetPasswordVerifyCode(options)
参数:
{Object} optionsemail
verifyCode
使用方法:
返回数据:
3. 发送新密码 Authing.changePassword(options)
参数:
{Object} optionsemail
password
verifyCode
使用方法:
返回数据:
验证用户邮箱
发送验证邮件 Authing.sendVerifyEmail(options)
参数:
{Object} optionsemail: 需要验证的邮箱
使用方法:
返回数据:
发送之后,用户将会收到一个包含验证链接的邮件,当用户打开此链接,我们将进行验证。
解绑邮箱
若使用 JavaScript 调用,需要使用 then().catch() 捕获结果和错误。
Authing.unbindEmail(options)
参数:
{Object} optionsuser
{String} 用户 ID,可选,默认为当前登录用户的 IDclient
{String} 应用 ID,可选,默认为当前登录应用的 ID
使用方法:
返回数据:
注意事项
若未绑定其他登录方式, 则不可解绑邮箱
查询用户授权的 SSO 应用列表
该接口返回用户在一个用户池下授权过的 OAuth 和 OIDC 应用列表。
Authing.getAuthedAppList(options)
参数:
{Object} optionsclientId: 用户池 id,必传
userId:用户 id,必传
page:页数,可选,默认 1
count:每页数目,可选,默认 10
使用方法:
返回数据:
撤回用户对 SSO 应用的授权
Authing.revokeAuthedApp(options)
参数:
{Object} optionsuserPoolId: 用户池 id,必传
userId:用户 id,必传
appId:SSO 应用的 id,必传
使用方法:
返回数据:
自定义请求链接
Authing 构造函数包含一个名为 host 对象,可接收自定义的请求链接(适合私有部署 Authing 的用户使用),使用方法如下:
host 对象中 user 和 oauth 的默认值是 Authing 官方的请求链接:
Last updated
Was this helpful?