前言
随着社交平台的兴起,越来越多的网站需要开放社交登录功能,让用户可以使用自己在 Facebook、Twitter、Google 等平台上的帐号进行登录。而 egg-passport-facebook 就是针对 Facebook 平台的 passport 策略插件,提供了非常方便的 Facebook 登录的接入方式,本文将详细介绍 egg-passport-facebook 的使用方法。
安装 egg-passport-facebook
在您的 egg 项目中使用 npm 安装 egg-passport-facebook:
$ npm install egg-passport-facebook
注册 passport plugin
在 config/plugin.js 文件中添加 egg-passport-facebook 插件的相应配置:
-- -------------------- ---- ------- ---------------- - - ------- ----- -------- -------------- -- ------------------------ - - ------- ----- -------- ----------------------- --
配置 passport 策略
在 config/config.default.js 文件中添加 egg-passport-facebook 的配置:
-- -------------------- ---- ------- ---------------- - - ------- ----- -------- --------------- -- ------------------------ - - ---- ------------------ ------- ---------------------- ------------ --------------------------- ------ --------- ------------------ --
其中,key 和 secret 是您在 Facebook 开发者中心创建应用后获取的 App ID 和 App Secret,callbackURL 是在 Facebook 应用设置中配置的“Valid OAuth Redirect URIs”,scope 则表示您需要获取的 Facebook 用户权限。
编写登录逻辑
在 app/controller/auth.js 文件中编写 Facebook 登录的逻辑:
-- -------------------- ---- ------- ----- ---------- - -------------------------- ----- -------------- ------- ---------- - ----- ------- - ------------- - - -- ------------------------------- --------- -- - ----- ---------- - ----- - ---- ------- - - ----- ----- ------------------------------------- - ---------------- ----------- ---------------- --------- -------- - ----- -------- - ------------------ ----------------------- - - -------------- - ---------------
其中,login 方法返回用于触发 Facebook 登录功能的链接,facebook 方法则是 egg-passport-facebook 提供的一个包装好的方法,并指定了成功和失败的跳转地址。而 logout 方法则是登出功能的实现。
编写账号绑定逻辑
在 app/controller/profile.js 文件中编写账号绑定的逻辑:
-- -------------------- ---- ------- ----- ---------- - -------------------------- ----- ----------------- ------- ---------- - ----- ------- - ----- - --- - - ----- -- ----------------------- - -------- - - -------- ------------------------ -- ------------------------- -- - ---- - -------- - - -- ----------------------- -- - - ----- ------ - ----- - ---- ------- - - ----- ----- - --------- ------------ ------------- ------- - - --------------- ----- ---- - ----- ----------------------------------- --------- ----- ---------------- ------------------------- - ----- -------- - ----- - ---- ------- - - ----- ----- ------------------------------ ------------------------- - - -------------- - ------------------
其中,index 方法用于显示用户信息或者登录链接,bind 方法则是在用户已经通过社交登录功能登录后,将社交帐号和系统帐号进行绑定的逻辑实现,unbind 方法则是取消帐号绑定的功能实现。
编写用户服务
在 app/service/user.js 文件中编写提供用户相关服务的逻辑:
-- -------------------- ---- ------- ----- ------- - ----------------------- ----- ----------- ------- ------- - ----- ---------------------- -------- - ----- - --- - - ----- ----- ---- - ----- ------------------------ ------------------- ----------- --- -- ------ - ------ ----- - ----- ------- - --- ---------------- ----------- - --- ----------- ----- -------------------- ------ -------------- -- ------------------------ -- --- ----- --------------- ------ -------- - ----- ------------ - ----- - --- - - ----- ------------- - ---------- ----- ------------ - - -------------- - ------------
其中,findOrCreate 方法用于在用户进行绑定操作时,查找已经有没有绑定过相应的社交帐号,如果有就直接返回用户,如果没有就在系统中新建一个用户,然后进行社交帐号绑定,unbind 方法用于取消社交帐号绑定。
结语
通过本文的介绍,相信您已经掌握了 egg-passport-facebook 的使用方法,同时也了解了社交登录功能的实现流程和细节,希望对您今后的 Web 开发有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055a3081e8991b448d7d3d