2

我在hostgator.com有一個共享ssl的主機,我在public_html(root)目錄中上傳了codeIgnitor網站。我想開發一個網站以及Facebook應用程序。 運行facebook應用程序時,網站運行成功'登錄facebook',它給出了URL重定向錯誤。在codeIgnitor中使用共享SSL的Facebook應用程序

這是HTTP URL

url(Website): http://example.org/ 

和安全的網址是

https://in9.hostgator.in/~username/ 

在Facebook的應用程序的配置,

canvas url : http://example.org/ 
    Secure Canvas URL : https://in9.hostgator.in/~username/ (Work in url) 

當我運行的Facebook應用程序,Facebook的給出了一個錯誤:

API Error Code: 191 
    API Error Description: The specified URL is not owned by the application 
    Error Message: Invalid redirect_uri: Given URL is not permitted by the application configuration. 

在應用程序中,沒有用於重定向或刪除根目錄中的index.php的.htaccess文件。

我遇到這個基地控制器代碼:

public function __construct() 
{ 
    parent::__construct(); 
    $this->load->library("session"); 
    $this->load->helper('cookie'); 

    parse_str($_SERVER['QUERY_STRING'], $_REQUEST); 
    $CI = & get_instance(); 
    $CI->config->load("facebook",TRUE); 
    $config = $CI->config->item('facebook'); 
    $this->load->library('Facebook', $config); 

} 

/** 
* Index function 
* @access public 
* 
public function index() 
{ 
    $userId = $this->facebook->getUser(); 
    // If user is not yet authenticated, the id will be zero 

    if($userId == 0){ 
        // Generate a login url 
     $params = array(
        'scope' => 'email,user_about_me, user_birthday, user_location'); 
     $url = $this->facebook->getLoginUrl($params); 
     echo "<script type='text/javascript'>" . "top.location.href = '" . $url. "';</script>"; 
     } 
    } 

當我打印「$網址」,然後在查詢字符串REDIRECT_URL爲「http://in9.hostgator.in/~username/」,而不是重定向到HTTPS路徑。

我很困惑,代碼中的錯誤是什麼?或者一些錯誤的服務器配置或者什麼? Plz提前幫助thanx。

回答

2

Facebook應用程序也有「應用程序域」設置,如果畫布網址不在列出的域名下,則Facebook sdk將不起作用。嘗試在那裏添加example.orghostgator.in

另外,您可以使用Facebook畫布URL作爲重定向URI,因此,如果您的Facebook應用程序的命名空間是my-facebook-app那麼您可以生成登錄網址是這樣的:

$this->facebook->getLoginUrl(array(
    'scope' => 'email,user_about_me, user_birthday, user_location', 
    // change the last segment to you app's namespace 
    'redirect_uri' => 'https://apps.facebook.com/my-facebook-app/' 
)); 

用帆布應用,這可能更多,因爲可行因爲如果重定向uri直接指向您的安全畫布網址,則用戶在進行身份驗證時將「鬆動」Facebook。

+0

這是不可能的,因爲當Facebook應用程序重定向到服務器,然後他再次獲得相同的網址(應用程序),所以它有一個遞歸重定向問題。 – Rajnish 2013-04-08 15:54:14

+1

@Rajnish,在示例代碼中,重定向只發生在應用程序尚未安裝時(用if($ userId == 0)保護),所以一旦用戶安裝應用程序,重定向應該停止。 – complex857 2013-04-08 16:01:21

+0

我已經把這個代碼放在CI控制器中,它會繼續重定向。因爲這個CAS你可以給我們如何防止重定向。我也回顯腳本來安裝用戶配置文件。 – Rajnish 2013-04-08 16:33:18

相關問題