2014-02-22 49 views
15

我在AWS Elastic Beanstalk上託管我的PHP Yii應用程序,因此使用數據庫存儲會話。我已經在共享主機環境中使用Hybridauth成功實現了Facebook登錄。當我主辦彈性魔豆Facebook登錄給出了錯誤:「您無法直接訪問此頁面」 - Hybrid認證

"You cannot access this page directly" 

URL作爲結束:

http://mydomain.com/hybridauth/default/callback?hauth.start=Facebook&hauth.time=1393106016 

我從here瞭解到,這與Facebook的回調應用程序,但找到一個不同的會議。 Endpoint.php然後拋出錯誤:

  # Init Hybrid_Auth 
     try { 
      // Check if Hybrid_Auth session already exist 
      if (! isset($_SESSION["HA::CONFIG"])) { 
       header("HTTP/1.0 404 Not Found"); 
       die("You cannot access this page directly."); 
      } 

如何確保Facebook調用回到同一個會話併成功使用hybridauth登錄?

+0

您是使用插件還是使用直接實現? – Michiel

+0

對不起,我不完全明白這個問題。我已經將此擴展程序 - http://www.yiiframework.com/extension/hybridauth/實施到我的Yii應用程序中。 – goose

+0

你有解決辦法嗎? –

回答

2

檢查您的Facebook應用程序的重定向網址。 Facebook不允許多個重定向網址。因此,每次更改主機/域/地址時,都必須重新配置Facebook應用程序的重定向URL或使用其他一組憑據。

而且您重定向URL應該是這樣的:http://mydomain.com/hybridauth/?hauth.done=Facebook

+0

謝謝你的回答。我確信這是正確配置的,不是這個問題,可悲的是。 – goose

1

對我來說,它的工作的主要領域,但沒有一個子域。我發現它是config.php中的base_url導致了錯誤。

而不是

"base_url" => "https://mydomain.com/inc/hybridauth/",

我改成了

"base_url" => "https://".$_SERVER['HTTP_HOST']."/inc/hybridauth/",

現在,它的作品無論我把它。

+0

我試圖在我的網站開發的插件,因爲它不是基於任何標準的MVC框架的答案。我也是越來越頁面無法顯示的問題。但是當我更改基礎url =>「base_url」=>「https://」。$ _ SERVER ['HTTP_HOST']。「/ inc/hybridauth /」後,現在說在連接到wstation.wzx期間發生錯誤.COM。 SSL收到的記錄超出了允許的最大長度。 (錯誤代碼:ssl_error_rx_record_too_long) – Vikram

+0

Hi @Vikram這是您現在擁有的SSL問題。如果您不使用SSL,只需將https更改爲http,或者如果同時使用'「//".$_ SERVER ['HTTP_HOST']。」/ inc/hybridauth /「',則更好。有關您在http://stackoverflow.com/questions/119336/ssl-error-rx-record-too-long-and-apache-ssl中提到的錯誤,請參閱更多信息 – PaulMrG

1

對於任何人都在爲這個問題而努力,並且它與www域註冊問題沒有關係,我的問題與不能寫入php會話目錄有關。不知道如何或何時被改變,但如果你不能寫入/var/lib/php/5.5/session,那麼hybridauth將不起作用。

2

這爲我工作,以及:

「BASE_URL」=> 「https://example.com/inc/hybridauth/」,

我改成了

「BASE_URL」=> 「https://開頭」 $ _ SERVER ['HTTP_HOST']。「/ inc/hybridauth /」,

5

由於PHP SESSION名稱 如果您在Yii的配置文件中更改了會話名稱。然後你必須使用添加這session_name('samar_v4');在文件protected/modules/user/vendors/hybridauth/Hybrid/Endpoint.php在功能開始authInit

0

我發現這個問題似乎無法解決。我放棄了,那是當我的直覺讓我做一個測試,然後說一切正常。

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

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

一個擁抱 和問候所有!

1

根據其他答案,我認爲這是一個會話問題,也許會話是在錯誤的域下啓動的,然後無法在其他域下重新獲取。

我通過從我的開發Apache配置中刪除了各種ServerAlias設置來解決這個問題。

這種 '引發' 錯誤:

ServerName mydomain.com.au.localhost 
ServerAlias www.mydomain.com.au.localhost 
ServerAlias localhost.mydomain.com.au  # << using this one 

這個固定的錯誤:

#ServerName mydomain.com.au.localhost 
#ServerAlias www.mydomain.com.au.localhost 
ServerName localhost.mydomain.com.au  # << using this one 

apachectl restart 

(我通常使用mydomain.com.au.localhost所以我在他們離開後爲使用。)

0

我解決了我的特定HybridAuth「您無法直接訪問此頁面」錯誤與會話cookie上的域名。我的應用程序存在於一個子域中,並且我將重定向設計爲指向socialize.sub.domain.tld,並且該cookie未到達_Endpoint。

將會話域更改爲.domain.tld解決了它。 - 希望這會有所幫助:)

1

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

我通過在hybridauth/index.php頂部(位於同一目錄作爲config.phplive.php)加入自己的自定義會話處理程序解決了這個問題。 這會強制Hybrid Auth使用您的自定義會話處理程序。