问题标签 [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 回答
1489 浏览

html - passport-facebook - 'X-Frame-Options' 到 'DENY'

我正在尝试开发与节点和护照的 facebook 连接。但是我的浏览器控制台出现了这个错误:

拒绝在框架中显示' https://www.facebook.com/dialog/oauth?response_type=code&redirect_uri=http% …te_event%2Cuser_birthday%2Cemail&client_id=632348833449996&type=web_server' 因为它将'X-Frame-Options'设置为'否定'。关于:空白:1

这是代码的一部分:

在我的 facebook 应用程序配置中,我使用以下 URL 设置了 App On Facebook 配置:http://localhost:3000/auth/facebook/

我做错了什么?

0 投票
1 回答
5601 浏览

node.js - 使用 Passport 和 ExpressJS 进行 Facebook 身份验证 - 为什么不调用验证回调?

我是 Passport,用于在 ExpressJS 应用程序中对用户进行身份验证。我试图将所有 Facebook 路由放在他们自己的模块中,因为我打算支持其他 OAuth 提供者。在我的启动脚本中,我定义了所需的 FB 端点:

如您所见,我需要包含实际路线和 Facebook 验证回调的“facebook”模块。它看起来像这样:

我可以看到(记录到标准输出)调用了 fb_auth,但上面定义的验证回调函数从来没有。我忽略了什么吗?我可以捕获的地方是否发生了错误?

谢谢!

0 投票
1 回答
1063 浏览

node.js - 护照-facebook中callbackUrl和函数的区别

我试图找出在使用带有 node/express 的 passport-facebook 时 Facebook 身份验证是如何工作的。

我对 callbackURL 和下面的函数感到困惑。

有人可以向我解释设置回调URL(这是成功登录尝试结束的地方吗?和登录后似乎也被调用的函数(accessToken,...)之间的区别。

0 投票
1 回答
86 浏览

node.js - 确定在哪个 Strategy 用户下登录

我的应用程序使用 Passport 和两种策略:Facebook 和 Local。是否有可能以某种方式(某些属性或状态变量)确定用户用于登录应用程序的策略(即,根据Passport 中的某些信息确定)req指示与登录用户关联的提供者的对象中是否有某些属性或其他设置?如果可能的话,真的更愿意从 Passport 中获取它,而不是设置我的 ow 变量来跟踪它。

0 投票
1 回答
1474 浏览

passport.js - 使用 Passport 通过 Facebook Strategy 登录应用时重新验证过期的 AccessToken(或获取新的)

在各种情况下,Facebook 内部的 AccessToken(用于 Facebook API 中的各种功能和其他情况)可能会失效。例如,如果用户在使用依赖 Facebook 登录的应用程序的会话之间更改了她的密码。还有一些其他情况。

但是,发生的情况是您的应用程序实际上崩溃了,并出现如下错误:data={"error":{"message":"Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.", "type":"OAuthException", "code":190, "error_subcode":460}}.

Passport 的 Facebook 策略使用 AccessToken,只要用户通过 Passport 登录/验证,它就可供应用程序使用。但是,问题是遇到上述错误时该怎么办。Facebook 提供了一个复杂的重新授权流程作为 PHP 中的示例,但一般意义上是您需要使用 Facebook 重新授权您的应用程序。

问题是,即使从您的 Facebook 页面中删除 Facebook 应用程序,并强制依赖 Facebook 登录的应用程序重新授权自己,Passport + Facebook 策略似乎仍在从浏览器的会话存储中获取最后一个现有的 AccessToken。(至少这是我在 Mozilla/Fx 26 中看到的)。我已经多次重新授权我的应用程序,但是在调试并查看 Passport 返回的内容时,我总是返回相同的无效 AccessToken。似乎如果会话存储中存在 AccessToken,Passport 会选择它而不是从 Facebook 获取新的。

那么有没有一种方法 - 在 Passport + Facebook 策略中 - 基本上忽略或覆盖任何存储的 AccessToken 并总是从 Facebook 请求一个新的,如果发生这种错误?完全不清楚如何实现这一点。谢谢您的帮助。

更新:调用策略的示例代码有refreshToken一个参数;这是做什么的?这个参数有可能的解决方案吗?

0 投票
1 回答
544 浏览

node.js - 由于“AuthorizationError”,未捕获来自 passport-facebook 的服务器错误

我在使用 passport-facebook 和 nodejs/express 时遇到了一些问题。

成功的登录处理得很好。但是,由于某种原因,当 FB 连接登录失败时,我的应用程序会引发服务器错误,该错误未被捕获并返回状态 500。我相信我使用的是相当标准的护照配置,所以我有点不知道可以做什么成为问题。

在这种情况下,为了创建一个错误,我正在使用来自另一个应用程序的测试用户登录我的沙盒应用程序。

错误/堆栈跟踪表明错误在我没有触及的模块代码中:

AuthorizationError at Strategy.OAuth2Strategy.authenticate (/Users/username/Sites/node_projects/applicationname/node_modules/passport-facebook/node_modules/passport-oauth2/lib/strategy.js:126:25) at Strategy.authenticate (/Users/username /Sites/node_projects/applicationname/node_modules/passport-facebook/lib/strategy.js:84:41)尝试(/Users/username/Sites/node_projects/applicationname/node_modules/passport/lib/passport/middleware/authenticate.js :243:16) 在 Passport.authenticate (/Users/username/Sites/node_projects/applicationname/node_modules/passport/lib/passport/middleware/authenticate.js:244:7) 在回调 (/Users/username/Sites/node_projects /applicationname/node_modules/express/lib/router/index.js:164:37) 在参数 (/Users/username/Sites/node_projects/applicationname/node_modules/express/lib/router/index.js:138:11) 在 Router._dispatch (/Users/username/Sites/node_projects/ applicationname/node_modules/express/lib/router/index.js:173:5) 在 Object.router (/Users/username/Sites/node_projects/applicationname/node_modules/express/lib/router/index.js:33:10)在下一个(/Users/username/Sites/node_projects/applicationname/node_modules/express/node_modules/connect/lib/proto.js:193:15)路由器(/Users/username/Sites/node_projects/applicationname/node_modules/express/lib/router/index.js:33:10)在下一个(/Users/username/Sites/node_projects/applicationname/node_modules/express/node_modules/connect /lib/proto.js:193:15)路由器(/Users/username/Sites/node_projects/applicationname/node_modules/express/lib/router/index.js:33:10)在下一个(/Users/username/Sites/node_projects/applicationname/node_modules/express/node_modules/connect /lib/proto.js:193:15)

这是路线,非常标准:

req.query 是

在阅读了这个已解决的问题(https://github.com/jaredhanson/passport-oauth/issues/16)后,我添加了中间件,以便 req.query 是:

这是我添加的中间件(我将其删除,因为它不起作用):

我应该更新我的软件包并尝试卸载/重新安装所有内容:

到目前为止没有运气并且没有想法,没有直接破解模块,这似乎没有必要。

有什么想法吗?

首先十分感谢。

0 投票
1 回答
2215 浏览

node.js - Passport-facebook 无法连接

在我的应用程序中,我正在尝试使用 facebook 帐户添加登录。由于我目前正在使用本地策略的护照,因此我尝试添加 facebook 策略。我在 Facebook 开发者网站上注册以获得我的令牌和秘密。我只是从官方护照 github 复制/粘贴源代码部分,以适应我的个人用途。调用时出现问题

我被困在这里,没有重定向到 facebook 登录页面。我的应用程序正在等待响应或等待重定向,但没有任何反应。我试图在 facebook 开发者页面上提供我的回调 URL,但我尝试不使用它(传递回调抛出护照策略)。

我错过了什么?

我的应用程序:

我的路线:

我的策略:

[编辑]

将回调的路由更改为此解决了我的问题。但是,我不明白为什么...

0 投票
5 回答
14109 浏览

node.js - 使用 passport-facebook 从 Facebook 检索照片

我可以通过 passport-facebook 检索基本用户信息,遵循以下代码并保存在 mongodb 中:

但是,我无法在“个人资料”中看到个人资料图片。

文档https://github.com/jaredhanson/passport-facebook说要检索照片,我们需要传递 profileFields,如下所示。但是这样做,我可以看到照片 URL,但会丢失 _json 中包含的其他数据,例如 profile._json.location.name。如何检索完整的其他用户信息的照片?

0 投票
1 回答
513 浏览

node.js - NodeJS 使用 Passport 和 Facebook

我几乎可以通过 Facebook 进行 Passport 身份验证,但是我的模型中的 FacebookStrategy 回调从未被调用,因此无法获取个人资料信息。我一定错过了一些东西,但没有运气弄清楚。

我的 App.js

我的路线

我的模特

0 投票
1 回答
1144 浏览

node.js - PassportJS - FacebookTokenStrategy 返回 404

我正在使用 PassportJS 来处理浏览器和移动客户端的 FB 身份验证。对于网络用户,我正在使用 Passport FacebookStrategy,这按预期工作。我还想允许移动客户端访问我的 API。我正在尝试使用 Passport FacebookTokenStrategy 来促进这一点。这似乎解决了一个小问题。当移动客户端向服务器发出 GET 请求时,将使用 FacebookTokenStrategy 并调用验证回调函数。在验证功能中,我可以看到用户配置文件可用,因此身份验证成功。但是,404 的 HTTP 状态会在响应中发送回移动客户端。我不确定如何正确配置它。这是我目前正在尝试的:

我应该提供 passport.authenticate('facebook-token'); 有一些额外的“onsuccess”回调?这在 Web 客户端的上下文中是有意义的,但我不确定应该如何使用 facebook-token 策略来处理。