通过javascript打开facebook连接窗口

Opening facebook connect window via javascript?

本文关键字:连接 窗口 facebook 打开 javascript 通过      更新时间:2023-09-26

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

有没有办法让这个页面通过javascript作为分层窗口打开,而不让用户离开我的网站?例如,我的网站会在后台,而facebook连接窗口则在其上方徘徊。

有什么想法吗?

答案是否定的。此外,您不能在IFrame中加载登录页面,因为Facebook为该页面设置了框架断路器。

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

但是,一旦用户使用基本权限集授权您的应用程序,您可能会提示该用户获得额外权限,对话框的显示模式为"iframe"(因为您有access_token)。

我在弹出窗口中使用Facebook Connect,它运行得很好。

1) "伪造"Facebook登录按钮

取一个按钮的屏幕截图,用属性为的a标签包装它的img标签

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文件,在用户完成连接对话框时处理用户的数据,例如,如果他是新用户,请保存他的用户名和facebookuid,或者如果他的ID已知,则只让他登录。然后关闭弹出菜单并通过Javascript刷新主页:

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

您可以通过<body onload='CloseAndRefresh()'> 触发该功能

请记住在登录URL(redirect_uri)中指定登录页面的URL。此外,如果您在登录URL中指定'display'=>'Popp',它将显示"权限请求"对话框的精简版本。

我支持David的回答。

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

无法发表评论。:(