2012-11-21 38 views
0

我有這種情況。 在一個MVC的Web應用程序,我們改寫的網址:重寫URL崩潰Facebook的SDK的PHP

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 

所以網址可能是:

http://mysite.com/ControllerName/MethodName/Param1/Param2....... 

現在我們需要實現應用程序Facebook的登錄。 我們簡單地複製並粘貼SDK頁面的代碼上的git

require 'facebook-php-sdk/src/facebook.php'; 

$facebook = new Facebook(array(
    'appId' => 'YOUR_APP_ID', 
    'secret' => 'YOUR_APP_SECRET', 
)); 

// Get User ID 
$user = $facebook->getUser(); 
if ($user) { 
    try { 
    // Proceed knowing you have a logged in user who's authenticated. 
    $user_profile = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    $user = null; 
    } 
} 
if ($user) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
} else { 
    $loginUrl = $facebook->getLoginUrl(); 
} 

做了這些,$user始終爲0,因爲Facebook返回與?key=parm「REDIRECT_URI」,其中的用戶信息的位置。

被Facebook重定向到實際的URL看起來像:

http://localhost/tesis/?state=6713ce83f25b296abd372ccad20a244d&code=AQA6xxwPiiQt06luKaDD84dFxIXPuhO41RlCQcnV5K2ZtVjyKvZ3A7uqqOQlEX4To_CoT8nEmUjzS2YOVsdhU5CE3I_jfK2LsmkpLsty91-EeipIIvFQLqe6VFB_OHYcj_J0-jdhXfAdYFQ2jsA6Hejnw8bF1ezWtEaZCNnqgc_mQWhovkV8XmFzLFGsqjr52bq2b0wR8Au3ZOSvJUnperaT#_=_ 

,所以我想我需要做的htaccess的一些修改。 但我不知道我需要做什麼更改

+0

Facebook重定向到的實際URL是什麼樣的,在重寫之後它在內部看起來像什麼?在服務器端Auth流程之後,SDK將查找'state'和'code'參數 - 因此必須在查詢字符串中將這些參數作爲GET參數傳遞給SDK,以便按照預期在$ _REQUEST內查找它們。如果您的重寫將這些轉換爲路徑組件,那麼SDK將無法識別它們。 (在這種情況下,在初始化SDK之前,您仍可以自己將它們設置爲$ _REQUEST。) – CBroe

+0

@CBroe我已更新問題 – jcvegan

回答

0

我有同樣的問題。 我只是重定向到主頁登錄URL是這樣的:

$params = array('scope' => 'email','redirect_uri' => 'http://www.page.com/index.php'); 
$loginUrl = $facebook->getLoginUrl($params); 

可能是你可以重定向到「登錄成功」頁面(非URL友好),幷包括一個鏈接到歷史倒退。

+0

仍然無法正常工作..我認爲有一些蠕蟲或可能不是所有apache的模塊達到這個是積極的。 – jcvegan