调用方式

最近更新时间:2021-11-04 11:31:03

我的收藏
CIAM 目前已经正式发布,提供了专用的 ciam-node-sdk,通过该 SDK,您可以将登录认证模块与您自己的 Web 函数项目快速集成,简化开发流程,提升开发体验。
说明
ciam-node-sdk 的下载链接: https://www.npmjs.com/package/ciam-node-sdk

CIAM 路由设计

路由地址
描述
/
index.html
/login
登录接口
/callback
登录回调
/logout
退出接口
/userinfo
获取用户信息

SDK 提供的方法

方法名称
描述
generateLoginUrl
生成认证登录 URL
fetchToken
通过 code 获取 token
getUser
获取用户信息
logout
退出登录

初始化

代码示例
const { NodeClient } = require('ciam-node-sdk'); // node-sdk
const ciam = new NodeClient({
clientId: 'your-clientid', // 此处为CIAM的应用ID,CIAM
应用中获取
userDomain: 'your-userDomain', // 此处为租户域名,CIAM
域名管理中获取
redirectUri:'your-redirectUri', // 此处为回调地址,CIAM
应用管理中获取
logoutRedirectUrl: 'your-logoutRedirectUrl', // 此处为退
出回调地址,CIAM应用管理中获取
scopes: ['openid'],
protocol: 'OIDC_PKCE',
});
参数说明
参数名
类型
是否必填
长度限制
描述
clientId
string
-
管理端添加的小程序应用 ID
userDomain
string
-
租户域名(自定义域名获取)
redirectUri
string
-
登录成功后跳转的 URL
logoutRedirectUrl
string
-
登录退出后跳转的 URL
scopes
array[Agreement]
-
遵循 oauth2.0 规范,默认为 openid
protocol
string
-
OIDC_PKCE(默认)、OIDC_DEFAULT

生成认证登录 URL

用于生成登录的 URL,实现快速跳转到 CIAM 登录页面。 代码示例
// 登录 CIAM
app.get('/login', async(req, res) => {
const url = await ciam.generateAuthUrl();
res.redirect(url);
})

获取 token 和用户信息

该方法用于当 CIAM 登录成功时,根据页面返回的 code 调用 fetchToken ,获取到的 token 用于获取用户信息。 代码示例
// 处理redirect回调
app.get('/callback', async (req, res) => {
const { code } = req.query;
const result = await ciam.fetchToken(code);
const { access_token, id_token } = result;
const userInfo = await ciam.getUser();
req.session.user = { ...userInfo, userInfo };
res.redirect('/');
})
fetchToken 参数说明
参数名
类型
是否必填
长度限制
描述
code
string
与 CIAM 认证返回的 code 相同
该参数由 CIAM 托管并返回

退出登录

该方法用于退出 CIAM 登录。 代码示例
// 退出CIAM登录
app.get('/logout', async (req, res) => {
if (!req.session.user) {
res.redirect('/');
}
const url = await ciam.logout();
req.session.destroy();
res.redirect(url);
})