首页 > 解决方案 > 使用 passport-facebook-token 进行用户注册羽毛身份验证

问题描述

我正在尝试允许用户通过“使用 facebook 登录”注册我的服务。

通过 Facebook 登录的移动应用用户注册

我已经完成了箭头 1-2。我需要做箭头 3-6。我在https://github.com/morenoh149/feathers-chat-facebook-signup-api做了一个最小的 Feathersjs 示例

我似乎无法获得羽毛身份验证和护照脸书令牌来生成用户对象并注册它们。我已经仔细审查了护照-facebook-token。这个答案解释了在对 passport-facebook-token 的回调中,您应该创建 User 对象。我如何使用羽毛身份验证来做到这一点?

当我在正文中提供令牌时

curl localhost:3030/authentication \
  --data-binary '{\
    "strategy": "facebook-token", \
    "access_token": "<phone token>" \
  }'

我明白了

{"name":"NotAuthenticated",
"message":"You should provide access_token","code":401,
"className":"not-authenticated",
"data":{"message":"You should provide access_token"}

当我将令牌作为标题传递时

curl localhost:3030/authentication \
  -X POST \
  -H "Authorization: Bearer <access token>"

我收到错误

{"name":"GeneralError",
"message":"Cannot read property 'toLowerCase' of undefined",
"code":500,"className":"general-error","data":{},"errors":{}}

标签: node.jspassport.jsfeathersjsfeathers-authenticationpassport-facebook-token

解决方案


所以我下载并运行了 repo,我使用 VSCode 来运行应用程序并设置断点。我在创建用户之前的钩子中创建了一个断点。

这里的问题是 gravatar 钩子应该是电子邮件,context.data但它实际上嵌入在 facebook 响应中。您将需要查看从该数据中提取电子邮件,以便您可以创建一个 gravatar 或完全删除 gravatar 挂钩。


推荐阅读