📅  最后修改于: 2023-12-03 15:30:01.547000             🧑  作者: Mango
Cloudrail是一个用于实现社交登录的中间件,开发者可以使用它集成Facebook、Google、LinkedIn、GitHub等社交平台的登录功能。使用Cloudrail,开发者无需关注每个社交平台的API变更以及维护多个OAuth连接,可以在同一个包中使用多个不同的平台进行登录验证。
您可以使用以下命令之一在项目中添加Cloudrail:
npm install cloudrail-si
或者
yarn add cloudrail-si
在安装了Cloudrail库之后,你需要在你的代码中为每个你想使用的社交平台注册一个实例。在这里,我们以Facebook为例:
const cloudrail = require("cloudrail-si");
cloudrail.Settings.setKey("[YOUR_CLOUDRAIL_API_KEY]");
const facebook = new cloudrail.services.Facebook(
null, // Redirect URI will be automatically generated
"[FACEBOOK_CLIENT_ID]",
"[FACEBOOK_CLIENT_SECRET]",
"[https://graph.facebook.com/v2.12/user-info]"
);
在上面的代码中,你需要替换以下内容:
有了上面的基础设置后,你就可以在代码中实现社交登录功能。在这里,我们以Express.js为例:
const cloudrail = require("cloudrail-si");
const express = require("express");
cloudrail.Settings.setKey("[YOUR_CLOUDRAIL_API_KEY]");
const app = express();
const facebook = new cloudrail.services.Facebook(
null,
"[FACEBOOK_CLIENT_ID]",
"[FACEBOOK_CLIENT_SECRET]",
"[https://graph.facebook.com/v2.12/user-info]"
);
app.get("/auth/facebook", (req, res) => {
const redirectUrl = facebook.getAuthorizationUrl({
state: "myState"
});
// redirect to redirectUrl
});
app.get("/oauth-callback", async (req, res) => {
const authCode = req.query.code;
const state = req.query.state;
const redirectUrl =
"http://localhost:3000/oauth-callback?state=" + state;
const auth = await facebook.exchangeAuthorizationCode(authCode, redirectUrl);
// do something
});
在上面的代码中,你需要替换以下内容:
Cloudrail还支持其他众多社交平台的集成,除了Facebook之外,例如:
你可以通过以下方式注册其他社交平台:
const cloudrail = require("cloudrail-si");
const google = new cloudrail.services.Google(
"[GOOGLE_CLIENT_ID]",
"[GOOGLE_CLIENT_SECRET]",
"http://localhost:3000/oauth-callback"
);
const linkedIn = new cloudrail.services.LinkedIn(
"[LINKEDIN_CLIENT_ID]",
"[LINKEDIN_CLIENT_SECRET]",
"http://localhost:3000/oauth-callback"
);
const gitHub = new cloudrail.services.GitHub(
"[GITHUB_CLIENT_ID]",
"[GITHUB_CLIENT_SECRET]",
"http://localhost:3000/oauth-callback"
);
CloudRail是一个避免开发者重新发明轮子的好助手。使用CloudRail,你可以轻松进行集成社交平台的工作,避免因为API变化而导致的不必要的代码更新。CloudRail的社区支持也保证了它的更新和稳定。