2014-11-05 46 views
4

我想爲我的網站編寫一個插件,使用HybridAuth 類與Facebook進行連接。Facebook使用HybridAuth登錄顯示錯誤您無法直接訪問此頁面

我只是想下面的代碼

function authenticatewith($provider) { 
    ini_set('display_errors','on'); 

    //includes 
    $config = dirname(__FILE__) . '/hybridauth-2.1.2/hybridauth/config.php'; 
    require_once("hybridauth-2.1.2/hybridauth/Hybrid/Auth.php"); 

    $provider_name = $provider; 

    //$config = $this->getconfig($id); 
    try { 
     // initialize Hybrid_Auth with a given file 
     $hybridauth = new Hybrid_Auth($config); 

     // try to authenticate with the selected provider 
     $adapter = $hybridauth->authenticate($provider_name); 

     // then grab the user profile 
     $user_profile = $adapter->getUserProfile(); 
    } 
    catch(Exception $e) { 
     echo "Error: please try again!"; 
     echo "Original error message: " . $e->getMessage(); 
    } 

    echo "User Details: "; 
    var_dump($user_profile); 
} 

當我調用此函數形成插件類。在瀏覽器中它顯示了以下錯誤:

You cannot access this page directly.

...並在瀏覽器的地址欄中的URL是這樣的:

http://zyx.com/oinmonm/plugins/sociallogin/hybridauth-2.1.2/hybridauth/?hauth.start=Facebook&hauth.time=1415168326

搜索計算器我發現了一個類似的問題之後,介紹有關類似的問題,但我一直無法弄清楚如何到那裏申請的建議,我的代碼解決這個問題:

You cannot access this page directly - HybridAuth Social Login

最可能的問題是不同的域名,因爲我的網站運行在兩個不同的域名。

如何修復我的代碼以防止此問題?

更多詳細信息

我有(例如)在www.bca.com一個網站鏈接,然後當你點擊它進入,將訪問我寫了一個插件文件Controller.php這樣。通常,如果我在網站中保存一個文件夾,就像www.bca.com無法訪問的插件文件夾,而不是其他域名可訪問的文件夾。

我想說的是,會話是在bca.com開始的,但Hybridauth類保存在其他一些域中。我認爲這是錯誤即將到來的原因。

我試圖調試,發現該錯誤是從Endpoint.php以下行彈出文件

// Check if Hybrid_Auth session already exist 
if (! $storage->config("CONFIG")) { 
    header("HTTP/1.0 404 Not Found"); 
    die("You cannot access this page directly."); 
} 

我一直在試圖從最近3天內解決這個問題。但我堅持在這一點上有人幫助我。 在此先感謝

+0

我有同樣的問題。但我知道是什麼造成的。我開始使用Zebra會話類。所以基本上這個腳本甚至找不到會話。有一件事我會考慮研究你的會話是如何完成的,這是不同的。我自己只需要找到一種方法讓這兩個人一起工作! – 2014-11-07 19:39:54

+0

我之前遇到過這個錯誤,它是在這個時候,這個hybridauth lib需要從會話中檢索的信息不存在。修復導致信息在您的會話存儲中不可用的問題,並且您將通過此錯誤。 – Ericson578 2015-04-07 23:59:43

回答

-1

對於任何具有相同問題的人都有一個問題:調用API的文件在同一個目錄中嗎?

我只有當我把我的文件放在與config.php文件相同的文件夾中。試試看,並告訴我它是否有效!

0

在文件頂部添加@session_start();語句後嘗試。

0

我有同樣的問題。它涉及我們的自定義會話處理程序,它由session_set_save_handler()設置。 Hybrid Auth使用標準的PHP會話,所以在重定向並打開一個新會話之後,Hybrid Auth開始使用標準PHP文件會話而不是自定義會話處理程序。這會導致會話中的配置數據丟失並獲取此錯誤消息。

我通過在hybridauth/index.php(位於與config.phplive.php相同的目錄中)的頂部添加我們自己的自定義會話處理程序來解決了此問題。 這會強制Hybrid Auth使用您的自定義會話處理程序。

相關問題