我有這種情況。 在一個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的一些修改。 但我不知道我需要做什麼更改
Facebook重定向到的實際URL是什麼樣的,在重寫之後它在內部看起來像什麼?在服務器端Auth流程之後,SDK將查找'state'和'code'參數 - 因此必須在查詢字符串中將這些參數作爲GET參數傳遞給SDK,以便按照預期在$ _REQUEST內查找它們。如果您的重寫將這些轉換爲路徑組件,那麼SDK將無法識別它們。 (在這種情況下,在初始化SDK之前,您仍可以自己將它們設置爲$ _REQUEST。) – CBroe
@CBroe我已更新問題 – jcvegan