npm 包 egg-passport-facebook 使用教程

阅读时长 7 分钟读完

前言

随着社交平台的兴起,越来越多的网站需要开放社交登录功能,让用户可以使用自己在 Facebook、Twitter、Google 等平台上的帐号进行登录。而 egg-passport-facebook 就是针对 Facebook 平台的 passport 策略插件,提供了非常方便的 Facebook 登录的接入方式,本文将详细介绍 egg-passport-facebook 的使用方法。

安装 egg-passport-facebook

在您的 egg 项目中使用 npm 安装 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

纠错
反馈