在开发 Web 应用时,我们经常需要使用第三方登陆,其中 Facebook 登陆是不可或缺的一种方式。passport-facebook-signedrequest 是一个用于通过 signed_request 验证用户身份的 PassportJS 策略。
简介
passport-facebook-signedrequest 可以方便地验证 Facebook 登录用户的身份信息,使用时需要注意以下三点:
- 需要使用 Facebook App 的 App ID 和 App Secret,可在 Facebook Developers 界面获取。
- Facebook App 需要设置 “Valid OAuth Redirect URIs”。
- 进行验证的请求需要包含 Facebook 的 signed_request 参数。
安装
首先需要安装 passport 和 passport-facebook-signedrequest:
npm install passport npm install passport-facebook-signedrequest
配置
在 PassportJS 中,需要对 passport-facebook-signedrequest 进行配置。具体见下例:
-- -------------------- ---- ------- ----- -------- - -------------------- ----- ----------------------------- - ---------------------------------------------------- ---------------- ------------------------------- --------- ---------- --- ----- ------------- ---------- --- --------- ------------ ---------- ------ ------------ ----- -- --------------------- ----- - -- ------ ---------- ------------- - ---
在本例中,使用 FacebookSignedRequestStrategy 构造一个 PassportJS 的策略,并设置了其可以获取 Facebook App 的 App ID 和 App Secret、验证成功时的回调函数。
使用
对于一个需要验证登陆状态的 Express Rout,可以使用如下代码:
router.get('/login/facebook/signedrequest', passport.authenticate('facebook-signedrequest', { authType: 'rerequest', scope: ['email'] }));
其中,'facebook-signedrequest' 为之前在配置时使用该策略时设置的名称。
在 Facebook 登陆回调 URL 中,我们需要对请求中的 signed_request 参数进行解码和验证。这可以通过如下方式:
-- -------------------- ---- ------- ---------------------------------------------------- ----------------------------------------------- --------- -------- ----- ------------- ---- - ----- ----------- - -------------------- ----- --------- - ----- ----- --------- - --------- ----- --------------------- - --------- - ----- ----- -------- - ----------- ----- -------------- - -------- - ---------------------- ----- -------- - --------- -- ------- ------ ----- ---------- ------------- ------------ ----------- ---------- ----------- ---------- ---------- --------- ---------------- --------------- ---------- -------- --- ---
在上述代码中,我们获取了验证成功时的用户信息,并使用这些信息返回了一个 Access Token。
总结
本文详细介绍了如何使用 npm 包 passport-facebook-signedrequest 进行 Facebook 登陆身份验证。通过对该策略的配置和使用方法的介绍,使得读者在开发时可以更加顺利地完成 Facebook 登陆验证。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600562e081e8991b448e063c