问题标签 [passport-facebook]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
550 浏览

node.js - 使用 node.js(MEAN 堆栈)应用程序上的护照登录/注册时 Facebook 重定向 URL 出错

我正在为我的应用程序实现 Facebook 登录和注册功能,并且可以访问 facebook 让用户输入他们的信息,但无法使回调工作。我已经将下面的代码输入到 passport.js 中(显然 x'ing 我们的信息):

index.js 中包含以下回调 URL:

我可以让应用程序直接访问 Facebook 登录页面 onClick,但是一旦用户将他们的电子邮件和密码输入到 Facebook,应用程序就无法在重定向时重新加载并将此人带到我们的主页。重定向开始发生,但一旦尝试加载我们的应用程序就会发生错误。我们是否可以错误地使用重定向字段之一?附带说明一下,我们应该在 facebook 开发人员应用程序页面上将什么设置为有效的 OAuth 重定向 URI?

0 投票
0 回答
1454 浏览

javascript - Express JS res.redirect 未定义

我按照本教程介绍了如何在 MEAN 堆栈中使用 passport-facebook,当我尝试使用时出现此错误,res.redirect('/signup')我总是收到此错误:ReferenceError: res is not defined

好像我没有res在我的函数中作为参数传递。我尝试在第二个/最后一个参数处添加它。但没有任何效果。我想念什么???

这是我的代码:

0 投票
2 回答
4206 浏览

facebook - Facebook 登录在用户个人资料中返回“未定义”字段,并且不返回电子邮件。MEANJs + Passport-facebook

我正在使用 Meanjs.org 样板,Facebook 注册将我返回到注册页面。以下是我到目前为止所采取的步骤。

1)设置 Facebook 应用网站 URL

http://localhost:3000/

以及 OAuth 的回调URI

http://localhost:3000/auth/facebook/callback

2)将 APP_ID 和 APP_Secret 作为 Client_ID 和 Client_Secret 放入

3)代码如下

--路线

-- oauthCallback 函数,

-- Passport-Facebook 策略

};

4) 调试

在 oauthCallback 函数下记录错误返回以下内容,

1TypeError:无法读取未定义的属性“0”

Facebook 在 Passport-Facebook 模块中作为个人资料返回的内容如下,

{ id: 'Id_of_the_person', 用户名: undefined , displayName: 'Full_name_of_person', name: { familyName: undefined , givenName: undefined , middleName: undefined }, 性别: undefined , profileUrl: undefined , provider: 'facebook', _raw: ' {"name":"Full_name_of_person","id":"Id_of_the_person"}', _json: { name: 'Id_of_the_person', id: 'Id_of_the_person', accessToken: 'access_token_value', refreshToken: undefined } }

任何人都可以指导我从 Facebook 获取正确的用户个人资料,包括用户电子邮件吗?

太感谢了。

0 投票
3 回答
587 浏览

javascript - 在路由更改时重新加载不受 ngRoute 管理的控制器

我的Web应用程序登录过程如下,

一个。用户点击登录按钮,链接将他们带到http://localhost:3030/login/facebook

湾。NodeJS 后端接收请求,并使用 passport-facebook 将浏览器定向到 Facebook 登录页面。

C。然后,Facebook 使用一些用户数据将用户引导回回调。(回调:http://localhost:3030/login/facebook/callback

d。使用用户数据,帐户要么存在,要么将被创建,并且将创建属于该帐户的令牌(使用 JWT)

e. 该令牌将通过重定向到http://localhost:3030/#/got_token/the_actual_jwt_string发送给用户

F。AngularJS 应用程序将使用 ngRoute 进行路由,并将令牌保存在 localStorage 中。

NodeJS 中的令牌发行代码,

AngularJS 中的路由代码,

这很好用,直到我的视图层次结构看起来像这样,

和控制器代码,

完成的路由ngRoute不会重新创建 my NavigationViewController,而是将_token变量设置为先前的状态。

我需要一种方法来NavigationViewController知道令牌已更改,因为它不参与路由。

0 投票
1 回答
258 浏览

javascript - 您如何证明用户在通过 Facebook 进行身份验证后已通过身份验证?

我正在学习教程,使用 Node 和 Passport 实现 Facebook 身份验证。

教程和文档都说要这样做:

但是,用户如何知道他们是否通过了身份验证?我想将数据发送到我的前端,以显示用户是否登录,并且我可以用来更新,比如我的导航栏。

据我了解,使用 Facebook 进行身份验证的过程是这样的:

  1. 发出GET /auth/facebook请求。
  2. 击中路线。
  3. 304 Redirect将 url 发送回 Facebook 门户。
  4. 使用回调 url 向 Facebook 门户发送请求。
  5. 用户在门户上单击“接受”。
  6. Facebook 发回一个304 Redirect带有 url 的回调 url。
  7. 请求被发送到您的回调 url,在这种情况下是GET /auth/facebook/callback.
  8. 的运行cbpassport.use(obj, cb)
  9. A304 Redirect被发回,其 url取决于成功或失败//login
  10. /向或发送请求/login

我不确定如何使用登录用户更新我的前端。

这不起作用,因为没有$http.get().then()接收数据的。


我尝试添加一些查询参数:

但这对我不起作用。网址栏说http://localhost:3000/?foo=bar#_=_,这不会记录任何内容:

当我这样做时它会起作用successRedirect: '/home?facebook=true'。但是在里面sendFile,我不能寄回任何东西。如果我尝试res.send('Authenticated with Facebook')它会给我这个错误:Error: Can't set headers after they are sent.。大概是因为sendFile正在发回文件并设置一些标题,然后我尝试用不同的标题发回其他东西。所以我不确定该怎么做。


我到达的方法是使用run块:

  1. 我不确定这是最好的方法。
  2. 它弄乱了我的测试,因为他们不期待 HTTP 请求,并且当我不总是想要这样做时,它会设置会话和 cookie。
0 投票
1 回答
1229 浏览

javascript - 我可以为护照设置多个 Facebook 策略吗?

我想以不同的方式处理以下与护照相关的操作。

  1. 使用 Facebook 注册
  2. 使用 Facebook 登录
  3. 将现有帐户连接到 Facebook

对于“注册”,我想做/检查:

  • 如果用户已经存在(基于 facebook oauth id),重定向到登录。
  • 如果用户已经存在(基于 facebook 个人资料中的电子邮件地址),提示用户使用电子邮件登录,然后连接他们的 facebook 帐户。
  • 创建一个新用户并登录。

对于“登录”和“连接帐户”,我想执行一系列其他检查/操作。

我已经查看了facebook和passport-facebook 模块的护照文档以及一堆相关的 Stack Overflow 问题,但仍在努力解决如何实现这一点。

如何使用不同的回调 URL 和选项实现不同的 Facebook 策略(通过护照)?

0 投票
1 回答
943 浏览

node.js - PassportJS 会话混淆了

在我们的 ExpressJS 应用程序中,当推送到生产服务器时,护照会话会随机混淆。即使我没有退出会话,该页面也可以随机加载另一个用户的视图。不做任何其他事情,另一次刷新将使我回到我自己的帐户(也是随机的)。

这种现象发生在我们的两个 Web 应用程序上,这些应用程序由两个不同的用户按照他们网站上的 Passport 指南编写。两个网络应用程序都使用 Facebook 连接/API。

这发生在 Redis 和 File 会话存储上。我看到了一篇关于使用全局变量的帖子:我们确定我们只使用局部范围。

我们做错了什么吗?

更新 v1

在一个应用程序上,我们为 Passport 的序列化/反序列化实现了以下内容:

另一个,我们也试过:

无论哪种方式,该应用程序仍然会混淆其会话。

更新 v2 仅当多个用户登录到服务器并同时使用时才会发生此错误。只有 1 人使用该系统时不会发生这种情况。

更新 v3 似乎问题可能是由 Amazon AWS 引起的,因为一些“错误用户”页面请求根本没有到达 NodeJS 应用程序(由 验证console.log)。

0 投票
1 回答
2993 浏览

node.js - TypeError:无法读取未定义护照-facebook 的属性“0”

每当我尝试使用 facebook 登录时,它都会返回此错误,我已按照此链接建议但仍然没有运气。Passport-facebook 收不到邮件

这是代码

我试图将范围从 更改{ scope: 'email' }{ scope: ['email'] },但仍然没有运气。

0 投票
1 回答
361 浏览

node.js - 通过 node.js Express Passport 登录后如何记住会话

使用 node.js Express 中的 Passport 模块,在访问者通过 Facebook 登录后,我成功获得了重定向。以下是我的代码的一部分:

我的问题是:我们如何记住会话?似乎没有办法将值从 .nextTick() 函数中传递出去,我也不能注册一个 cookie ......

0 投票
0 回答
170 浏览

angularjs - 意思是:在node.js端facebook登录后返回角度应用程序

我的 node.js 服务器与我的 Web 应用程序所在的主机/端口不同,我希望使用护照 + facebook-strategy 登录。

我能够从 nodejs 登录(假设服务器代码工作正常),但我似乎无法找到登录完成后返回我的 Web 应用程序的最佳方式:

我的第一个想法是通过控制器在一些 ng-click 功能中执行此 AJAX 调用,但它没有工作(这就是原因

现在我从服务器响应中获得重定向,而无需对 Web 应用程序进行任何控制。

这是服务器端发生的事情:

我希望我在这里很清楚。有任何想法吗?