2013-03-18 39 views
17

我試圖讓這個簡單的PHP網站上的HybridAuth社交登錄工作。下載HybridAuth並安裝它。然後發現,即使這些例子不適用於社交登錄(在遠程服務器上也嘗試過)PHP HybridAuth社交登錄根本不起作用。重定向到?hauth.start = Facebook&hauth.time

正常signin_signup示例工作正常但每當我點擊鏈接登錄到社交網絡(即Facebook,Twitter)它將我重定向到(MY_BASE_URL/index.php?hauth.start = Facebook & hauth.time),根本不顯示任何登錄窗口/錯誤消息。 config.php有一個像http://example.com/index.php這樣的基本網址,但它只是沒有迴應,是否有東西丟失了?我已經花了2天時間在它上面了

她e是我的config.php

return 
    array(
     "base_url" => "http://example.com/index.php", 

     "providers" => array ( 
      // openid providers 
      "OpenID" => array (
       "enabled" => false 
      ), 

      "AOL" => array ( 
       "enabled" => false 
      ), 

      "Yahoo" => array ( 
       "enabled" => false, 
       "keys" => array ("id" => "", "secret" => "") 
      ), 

      "Google" => array ( 
       "enabled" => true, 
       "keys" => array ("id" => "", "secret" => "") 
      ), 

      "Facebook" => array ( 
       "enabled" => true, 
       "keys" => array ("id" => "xxxxxxxxx", "secret" => "xxxxxxx") 
      ), 

      "Twitter" => array ( 
       "enabled" => true, 
       "keys" => array ("key" => "xxxxxxxx", "secret" => "xxxxxxxx") 
      ), 

      // windows live 
      "Live" => array ( 
       "enabled" => false, 
       "keys" => array ("id" => "", "secret" => "") 
      ), 

      "MySpace" => array ( 
       "enabled" => false, 
       "keys" => array ("key" => "", "secret" => "") 
      ), 

      "LinkedIn" => array ( 
       "enabled" => true, 
       "keys" => array ("key" => "xxxxxxxx", "secret" => "xxxxxxx") 
      ), 

      "Foursquare" => array (
       "enabled" => false, 
       "keys" => array ("id" => "", "secret" => "") 
      ), 
     ), 

     // if you want to enable logging, set 'debug_mode' to true then provide a writable file by the web server on "debug_file" 
     "debug_mode" => false, 

     "debug_file" => "" 
    ); 

有人能幫我嗎?我有一種感覺,在搜索互聯網很長時間後,它並不是很好。如果是這樣的話,有人可以指出一個更好的替代開源/免費社交登錄庫嗎?

+0

任何人都有建議嗎?真的很沮喪... – tintinboss 2013-03-18 14:44:29

回答

22

繼tintinboss自己的答案,我發現我需要檢查hauth_done以及(這是一個例子測試臉譜):

if (isset($_REQUEST['hauth_start']) || isset($_REQUEST['hauth_done'])) 
{ 
    Hybrid_Endpoint::process(); 
} 

這次終於得到它的工作 - 謝謝你tintinboss爲有用的答案!

+1

這解決了我的問題! +1 – Victor 2015-01-19 12:37:56

19

好的,我自己解決了。

如前所述,文檔真的不好。下面是誰想要這個代碼在未來

首先整合對任何人的解決方案,你必須讓你的BaseURL這樣在config.php,我不是使用WWW

"base_url" => "http://yoursite.com/subdomain/index.php", OR 

"base_url" => "http://yoursite.com/index.php", 

注意。不知道爲什麼,但它不適用於www。

現在棘手的問題,你必須包括這在你的index.php文件

require_once("PATH_TO_HYBRID/Auth.php"); 
require_once("PATH_TO_HYBRID/Endpoint.php"); 

if (isset($_REQUEST['hauth_start'])) 
     { 
      Hybrid_Endpoint::process(); 

     } 

端點過程是什麼讓你重定向到一個空白頁,如果沒有提供。就我所測試的,你必須將它添加到index.php。

現在的代碼應該可以正常工作:)如果能幫助某人,我會很高興。

+6

謝謝。我不知道爲什麼像'工作演示'這樣的瑣碎事情似乎無法避開人們。是的,我知道並不是每個場景都可以被覆蓋,但我不確定我是否會自己找到Hybrid_Endpoint :: process()。 另外,我會告訴谷歌,至少,它需要註冊的重定向URL,並且?hauth.done = Google需要成爲Google註冊的重定向的一部分,據我所知(只有這樣它爲我工作)。 再次,謝謝。 – mgkimsal 2013-06-23 21:25:20

+0

在頁面網址中也有www,你也試圖在扳手上測試它。 – Ally 2013-07-28 15:21:35

+0

花了幾個小時弄清楚爲什麼我沒有重定向,只接收沒有找到的類。我甚至刪除了所有的.htaccess規則,並清除了我的自動加載模式以找出我只需要刪除'www'。從基地網址...您的回答非常感謝!謝謝。 – Ben 2015-08-19 07:44:37

7

@tintinboss和@dJomp答案將我排序。但是我仍然需要從已登錄的用戶那裏獲取信息,這確實花了我很長時間。在這裏,我分享了最終版本,這將使你遠離這個可怕的循環。

$config = require 'config.php'; 
require_once("Hybrid/Auth.php"); 
require_once("Hybrid/Endpoint.php"); 

if (isset($_REQUEST['hauth_start']) || isset($_REQUEST['hauth_done'])) { 
    Hybrid_Endpoint::process(); 
} else { 
    try { 
     $hybridauth = new Hybrid_Auth($config); 
     $google = $hybridauth->authenticate("Google"); 
     $user_profile = $google->getUserProfile(); 

     echo "Hi there! " . $user_profile->email; 
    } catch(Exception $e){ 
     echo "Ooophs, we got an error: " . $e->getMessage(); 
    } 
} 
1

嗨我已經嘗試了所有這個問題的解決方案建議,但都沒有達到解決方案。我解決了這個問題。

「BASE_URL」=>的 'http://'.$_SERVER [' SERVER_NAME '] .'inauth/AUTH',

這裏的關鍵點是服務器名稱。此外,Cookie正在記錄您的會話,您無法預覽您所做的更改。清除Cookie並重試。