使用Facebook API对具有不同域名的站点进行身份验证

时间:2010-04-12 21:55:19

标签: api authentication facebook dns

我们有一个支持多个网站的CMS,我们的一个功能允许我们的用户(网站管理员)连接到网站的Facebook帐户,以允许状态更新,创建事件并将图片从CMS上传到FB。 / p>

由于每个站点可能有多个站点管理员无法访问站点FB用户名和密码,因此需要进行一次身份验证。我们使用iframe并使用$ facebook-> require_login()进行身份验证,将用户重定向到FB登录和身份验证页面。

所有这一切都运行正常,但当用户点击“允许”时,身份验证将会中断,因为它只会重定向到“授权后重定向网址”字段中的任何内容,使得该应用程序已过时,除了中的任何其他域“授权后重定向网址”

我知道其他API的身份验证方法(如Vimeo和YouTube)将允许您指定NEXT参数,该参数相当于“授权后重定向URL”,并且可以在运行时设置。

如何为多个域名开展此工作?

有关此问题的任何提示都会有很大帮助

2 个答案:

答案 0 :(得分:1)

如果回调页面位于您的域中,该页面可以充当代理,您只需传递代理页面所需的参数即可将用户重定向到正确的位置。例如,我使用了我想要重定向的域的URL以及我需要的ID来知道我正在处理哪个用户。

我的代码最终看起来像这样:

授权链接:

$authorizeURL = "http://www.facebook.com/authorize.php?api_key=" . $facebookApiKey . "&v=1.0&ext_perm=status_update&domainName=$domainName&path=/path/to/my/next/page.php";

和“代理”代码需要这样的东西:



    $path =  $_GET['path'];
    $query = $_GET['query'];
    $domainName = $_GET['domainName'];

    //if you happen to have a query, get the values like this:
    parse_str($query, $queryValues);
    $id = $queryValues['id'];

    // construct the url where your user came from or where you want them to be redirected.
    $url = "http://$domainName/$path?$query";

    header("Location: " . $url);
    exit;


这不是整个代码,但它会让你知道如何做到这一点。

答案 1 :(得分:0)

创建一个仅用于FB身份验证的分隔域。