通过javascript打开facebook连接窗口?

时间:2011-06-07 06:00:38

标签: javascript jquery facebook facebook-graph-api

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

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

有什么想法吗?

3 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:3)

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

1)“假”Facebook-Login-Button

获取Button的屏幕截图,使用带有属性

的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“Landingpage”

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

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

您可以通过<body onload='CloseAndRefresh()'>

触发该功能

请务必在Login-Url(redirect_uri)中指定您的目标网址。 此外,如果您在登录网址中指定“display”=&gt;“popup”,它将显示“权限请求”-Dialog的精简版本。

答案 2 :(得分:2)

我支持大卫的回答。

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

无法发表评论。 :(