【问题标题】:Getting Facebook Authentication Dialog to redirect to the original browser window running my application让 Facebook 身份验证对话框重定向到运行我的应用程序的原始浏览器窗口
【发布时间】:2012-01-29 13:26:42
【问题描述】:

我真的是 Facebook API 的新手,无法让 Facebook 身份验证对话框重定向到我的应用程序的原始浏览器窗口。这是通过客户端流程的当前流程:

  1. 用户已登录到我的应用程序(带有 Javascript/Jquery 脚本的 Ruby on Rails 应用程序)。

  2. 用户单击我的应用程序中的按钮以登录他/她的 Facebook 帐户。

  3. Facebook 身份验证对话框在第二个窗口中弹出,要求用户登录。

  4. 用户登录 Facebook

  5. Facebook 身份验证对话框询问用户是否要授予我的应用程序权限。

  6. 用户点击确定分享个人资料信息。

  7. Facebook 身份验证对话框重定向第二个窗口,以打开我的应用程序实例,并在 URL 中使用访问令牌。

我的问题如下:

  1. 如何在用户成功登录 Facebook 帐户后关闭 Facebook 身份验证对话框?

  2. 如何在关闭第二个窗口后获得对 Facebook 访问令牌的访问权限?

说明我最终要做什么的最佳方式是当有人登录 ESPN 的网站时(第一个窗口)。请注意,将打开一个模式窗口(第二个窗口),您可以在其中单击 ESPN 网站上的“登录”(右上角)。在此模式窗口中,您可以使用您的 Facebook 帐户登录。单击“使用 Facebook 帐户登录”链接将打开第三个窗口,该窗口将引导您完成 Facebook 身份验证过程。完成登录 Facebook 后,第三个窗口将关闭,并且模式窗口会根据第三个关闭的窗口的状态进行更新。

如何让 Facebook 身份验证对话框窗口关闭并重定向到前一个窗口?

谢谢!

【问题讨论】:

    标签: javascript facebook authentication redirect client-side


    【解决方案1】:

    这是我在类似情况下所做的。对于 facebook 对话框,让它重定向到您网站上的页面,然后简单地获取访问令牌和您需要的任何其他数据。 (就我而言,我只是对一些用户信息进行了会话)。在该页面的输出中,在您的 document.ready 中包含一些 javascript,它将关闭第二个窗口,并重定向到您在第一个窗口中想要的任何页面。它看起来像这样。

    window.opener.location.href = '/redirect_url_for_first_window'; //set url of the main window
    window.close(); //close the popup
    

    您可以在弹出窗口中使用window.opener 来引用它来自的窗口。您甚至可以让您的弹出窗口访问变量并调用主窗口的函数。

    希望这会有所帮助!

    【讨论】:

    • 谢谢你的建议,布赖恩。我最终使用了 FB 的登录,它会弹出一个窗口。用户登录他/她的 FB 帐户后,弹出窗口将关闭且不重定向。现在的问题是我无法让父窗口检测FB登录弹出窗口何时关闭。关于FB登录弹出窗口关闭后如何在父窗口中触发javascript函数的任何想法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多