我们有一个支持多个网站的CMS,我们的一个功能允许我们的用户(网站管理员)连接到网站的Facebook帐户,以允许状态更新,创建事件并将图片从CMS上传到FB。 / p>
由于每个站点可能有多个站点管理员无法访问站点FB用户名和密码,因此需要进行一次身份验证。我们使用iframe并使用$ facebook-> require_login()进行身份验证,将用户重定向到FB登录和身份验证页面。
所有这一切都运行正常,但当用户点击“允许”时,身份验证将会中断,因为它只会重定向到“授权后重定向网址”字段中的任何内容,使得该应用程序已过时,除了中的任何其他域“授权后重定向网址”
我知道其他API的身份验证方法(如Vimeo和YouTube)将允许您指定NEXT参数,该参数相当于“授权后重定向URL”,并且可以在运行时设置。
如何为多个域名开展此工作?
有关此问题的任何提示都会有很大帮助
答案 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身份验证的分隔域。