2013-03-18 15 views
17

Próbowałem utworzyć logowanie społecznościowe HybridAuth na tej prostej witrynie php. Pobrano HybridAuth i zainstalowałem go. Następnie okazało się, że nawet przykłady nie działają dla logowania społecznościowego (wypróbowano również na zdalnym serwerze)PHP social signor nie działa w ogóle. Przekierowanie na adres? Hauth.start = Facebook i hauth.time

Normalny przykład signin_signup działa dobrze, ale za każdym razem, gdy kliknę link, aby zalogować się do sieci społecznościowej (np. Facebook, Twitter), przekierowuje mnie do (MY_BASE_URL/index.php? hauth.start = Facebook & hauth.time) bez pokazywania żadnych okien logowania/komunikatów o błędach w ogóle

Uważnie przeczytałem dokumentacje i inne rozwiązania zamieszczone tutaj. config.php, aby mieć bazowy adres URL, taki jak http://example.com/index.php. Ale to po prostu nie odpowiada. Czy jest coś, czego mi brakuje? Spędziłem 2 dni na nim.Alternator: e to mój 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" => "" 
    ); 

Czy ktoś może mi pomóc? Odniosłem wrażenie, że po dłuższym przeszukiwaniu Internetu nie działa zbyt dobrze. Jeśli tak, to czy ktoś może wskazać lepszą alternatywną bibliotekę open source/bezpłatną bibliotekę społecznościową?

+0

Ktoś ma poradę? Naprawdę sfrustrowani ... – tintinboss

Odpowiedz

22

nawiązaniu do własnej odpowiedzi tintinboss za znalazłem musiałem sprawdzić hauth_done jak dobrze (to było na przykład testowania Facebook):

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

To w końcu dostał to działa - Dziękuję tintinboss dla użytecznej odpowiedzi !

+1

To rozwiązuje mój problem! +1 – Victor

19

W porządku, sam to rozwiązałem.

Jak wspomniano wcześniej, dokumentacja naprawdę nie była dobra. Oto rozwiązanie dla każdego, kto chce, aby zintegrować ten kod w przyszłości

Po pierwsze, trzeba dokonać baseURL jak to w config.php

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

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

Zauważ, że nie używam www. Nie wiem dlaczego, ale nie działa z www.

Teraz najtrudniejsza część, trzeba to ta w pliku index.php

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

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

     } 

Proces Endpoint jest co sprawia, że ​​można przekierować do pustej strony, jeśli nie są dostępne. I musisz dodać go do index.php, o ile testowałem.

Teraz kod powinien działać poprawnie :) Będę szczęśliwy, jeśli komuś pomoże.

+6

Dzięki. Nie mam pojęcia, dlaczego takie trywialne rzeczy jak "działające dema" wydają się wymykać ludziom. Tak, wiem, że nie każdy scenariusz może być zawsze objęty, ale nie jestem pewien, czy kiedykolwiek znalazłbym Hybrid_Endpoint :: process() na własną rękę. Dodatkowo, wrzucę to dla Google, przynajmniej wymaga to zarejestrowanych adresów URL przekierowań, a "hauth.done = Google musi być częścią twojego zarejestrowanego przekierowania z Google, o ile mogę powiedzieć (tylko sposób to działało dla mnie). Jeszcze raz dziękuję. – mgkimsal

+0

Również mając www w adresie URL strony próbujesz przetestować również na spannersach. – Ally

+0

Spędziłem godziny, aby dowiedzieć się, dlaczego nie zostałem przekierowany i nie znaleziono tylko "klasy". Usunąłem nawet wszystkie reguły .htaccess i wyczyściłem mój schemat automatycznego ładowania, aby dowiedzieć się, że musiałem usunąć tylko "www". z adresu bazowego ... Twoja odpowiedź jest bardzo cenna! Dziękuję Ci. – Ben

7

@tintinboss i @dJomp posortowane mnie. Jednak nadal potrzebowałem uzyskać informacje z zalogowanego użytkownika, co naprawdę mnie zabrało. Tutaj dzielę się ostateczną wersją, która zabierze Cię daleko od tej strasznej pętli.

$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

Witam Próbowałem wszystkich sugestii rozwiązania tego problemu, ale żaden nie osiągnął rozwiązania. Rozwiązałem ten problem w ten sposób.

"base_url" => 'http: //'.$_SERVER [' SERVER_NAME '] .'inauth/auth',

Kluczowym punktem jest tu nazwa serwera.Ponadto pliki cookie rejestrują twoje sesje i nie możesz wyświetlić podglądu zmian, które wprowadziłeś. Usuń pliki cookie i spróbuj ponownie.