【问题标题】:Opening facebook connect window via javascript?通过javascript打开facebook连接窗口?
【发布时间】:2011-06-17 16:18:07
【问题描述】:

当有人试图通过 facebook 登录我的网站时,他会被重定向到一个页面,在该页面上他可以看到所有请求的权限,然后单击以允许/禁止它们。

有没有办法让这个页面通过 javascript 打开为一个分层窗口,而无需用户离开我的网站?例如,当 facebook 连接窗口悬停在其上方时,我的网站将在后台运行。

有什么想法吗?

【问题讨论】:

  • 我认为你可以使用 jquery 弹出并在其上加载 iframe....
  • @Anish 没有办法在同一个窗口中做吗?

标签: javascript jquery facebook facebook-graph-api


【解决方案1】:

答案是否定的。此外,您无法在 IFrame 中加载登录页面,因为 Facebook 为该页面设置了分帧器。

您正在谈论的页面称为OAuth dialog。默认情况下,请求用户登录到您的应用会导致页面重定向,因为“display”参数设置为“page”(其他值包括:popup、iframe、touch 和 wap)。您想要的是在显示设置为“iframe”的情况下调用此对话框。但是,文档states:“如果指定 iframe,则必须具有有效的 access_token。”而且,要获得 access_token,用户需要先登录到您的应用程序。因此,您将无法在嵌入式 IFrame 中显示登录页面。

但是,一旦用户使用基本权限集授权您的应用,您可能会提示该用户使用对话框显示模式为“iframe”的其他权限(因为您拥有 access_token)。

【讨论】:

  • 如果我想让他在登录时留在我的网站上,最好的选择是使用弹出窗口?
  • 最好的选择是使用 JavaScript SDK 的默认行为(即页面重定向),因为弹出窗口可能由于各种原因而无法打开。例如,Internet Explorer 的文档states:“弹出窗口阻止程序阻止脚本启动的弹出窗口,这些窗口在用户没有单击链接的情况下创建 [...]。”由于 JS SDK 的错误,我看到了其他失败。
  • 是的,但客户坚持认为您必须保持在同一个站点上并且不会被重定向。为此,弹出窗口是最佳选择吗? (它们只会在点击链接后触发)
  • 在这种情况下,是的——使用弹出窗口是第二好的选择。
【解决方案2】:

我在弹出窗口中使用 Facebook Connect,效果很好。

1) “伪造” Facebook 登录按钮

截取按钮的屏幕截图,用带有属性的 a-tag 包装它的 img-tag

href="<?= $facebook->getLoginUrl(...); ?>"
onclick="facebookPopup(this.href); return false"

2) 创建 Javascript 弹窗函数

function facebookPopup (url) {
    popup = window.open(url, "facebook_popup",
"width=620,height=400,status=no,scrollbars=no,resizable=no");
    popup.focus();
        }

3) 创建 FB Connect “登陆页面”

创建一个 php 文件,在用户完成连接对话框后处理用户的数据,例如,如果他是新用户,则保存他的用户名和 facebook-uid,或者如果他的 ID 已知,则只登录他。 然后关闭弹出窗口并通过 Javascript 刷新您的主页:

function CloseAndRefresh() 
    {
        window.opener.location.href = window.opener.location.href;
        window.close();
    }

您可以通过&lt;body onload='CloseAndRefresh()'&gt;触发该功能

请记住在 Login-Url (redirect_uri) 中指定您的登录页面的 URL。 此外,如果您在登录 URL 中指定 'display'=>'popup',它将显示“Permission Request”-Dialog 的精简版本。

【讨论】:

    【解决方案3】:

    我支持大卫的回答。

    此外,如果您以某种方式在 iframe 或 div 中加载登录对话框,用户将无法判断他/她是否真的在向 Facebook 或其他网站提交登录凭据。

    还不能评论。 :(

    【讨论】:

    • 关于用户无法判断它是否真的是 Facebook 的好处。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多