2010-04-12 66 views
2

我们拥有支持多个网站的CMS,我们的功能之一允许我们的用户(网站管理员)连接到网站Facebook帐户以允许状态更新,创建活动并上传图片在CMS中与从FB。使用Facebook API验证使用不同域名的网站

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

所有这些工作都很好,但当用户点击“允许”时,身份验证将会中断,因为它只会重定向到“Post-Authorize Redirect URL”字段中的任何内容,从而使该应用程序对于任何其他域在“授权后重定向URL”

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

如何让这项工作为多个域名?

在这个问题上的任何暗示将有很大的帮助

回答

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; 


这是不是整个代码,但它会给你一个关于如何去做的想法。

0

做只为FB认证使用的分离域。

+0

谢谢你的回答。我正在考虑这样做,尽管这不幸并不是解决这个问题最“优雅”的方案。 – Onema 2010-04-12 23:21:27

+0

我不明白这将如何解决问题? – 2010-05-24 14:25:55

+0

Paul,我已经添加了我为这个问题和一些示例代码实现的解决方案。 – Onema 2010-05-24 21:41:44

相关问题