我正在使用Facebook PHP SDK以允許用戶使用Facebook登錄到我的網站。
在下面我的測試(假設URL是http://mysite.com/test/fbtest.php),FB PHP SDK和mod_rewrite:getUser返回0
<?php
require_once("facebook.php");
$fb = new Facebook(array('appId' => 'APP_ID', 'secret' => 'APP_SECRET'));
$fbuser = false;
$fbuserid = $fb->getUser();
$fblogin = $fb->getLoginUrl(array(
'redirect_uri' => "http://{$_SERVER['HTTP_HOST']}/test/fbtest.php"));
if($fbuserid)
{
try
{
$fbuser = $fb->api("/me");
print_r($fbuser);
echo "<br/>\n";
}
catch (FacebookApiException $e)
{
$fbuser = false;
$fbuserid = 0;
}
}
if(!$fbuser)
echo "<a href=\"$fblogin\">FB Login</a>\n";
?>
這似乎按預期方式工作。然而,當我添加以下重寫規則,
RewriteRule ^/FBtest/(.*)$ http://%{HTTP_HOST}/test/fbtest.php$1
然後更改登錄重定向到下面,
$fblogin = $fb->getLoginUrl(array(
'redirect_uri' => "http://{$_SERVER['HTTP_HOST']}/FBtest/"));
然後$fb->getUser()
總是返回0。我覺得我失去了一些東西重要。
HTTP_HOST很可能是_same_域。 – CBroe 2012-07-06 08:33:41
我相信Facebook通常會重定向到錯誤頁面,如果您嘗試從未指定的域進行身份驗證。 – finLprtoTyp 2012-07-06 13:02:28