我們嘗試使用PHP SDK將用戶登錄到Codeigniter應用程序,我們使用分段的URI並且不需要查詢字符串,因此我們選擇不使用使用它們。 CI和Facebook似乎存在的一個問題是將redirect_uri
參數傳遞給getLoginUrl()
e.x.Codeigniter,Facebook和Facebook的登錄「代碼」查詢變量
public function login(){
if(!$this->user){
$this->data['loginUrl'] = $this->facebook->getLoginUrl(array(
'redirect_uri' => 'http://appdomain.com/users/login'
));
$this->load->view('users/login', $this->data);
}else{
redirect('home/index');
}
}
登錄到Facebook上後,返回的URI有一個code
查詢變量CI不喜歡,它本質上打破了路由,並顯示一個空白頁。
http://appdomain.com/users/login/?code=dsfeoilkjd983274893hflksdfhhewhkdsiue8...
即使我添加到$route['users/login/(:any)'] = 'users/login';
routes.php
,我仍然重定向到一個空白頁。 Since we are using getAccessToken()
代表用戶進行API調用,我們不需要使用code
query var來交換訪問令牌。是否有可能在將其路由到method/action
之前完全刪除查詢字符串,可能在MY_Controller
?
我能夠繞過這個問題的唯一方法是將默認控制器傳遞給redirect_uri
參數,其他所有內容都不會路由到正確的URI並只顯示一個空白頁。
任何建議將不勝感激!
感謝您的迴應!但是,這給我一個內部服務器錯誤。我使用.htaccess刪除index.php文件,我使用和不使用RewriteCond $ 1!(index \ .php | images | robots \ .txt)進行測試 RewriteRule ^(。*)$ /index.php/$1 [L]',結果相同 – dcd0181
在第一行更新了答案 - need'!=「」''。還調整了'[L]',因爲它會告訴htaccess停止解析,並且如果它低於其他規則,則不會解析查詢字符串Cond。 – stormdrain