2013-03-18 29 views
17

Tôi đã cố gắng làm cho Công việc đăng nhập xã hội của HybridAuth hoạt động trên trang web php đơn giản này. Đã tải xuống HybridAuth và cài đặt nó. Sau đó, thấy rằng ngay cả những ví dụ không hoạt động cho đăng nhập xã hội (đã thử trên máy chủ từ xa quá.PHP HybridAuth đăng nhập xã hội không hoạt động chút nào. Đang chuyển hướng đến? Hauth.start = Facebook & hauth.time

Ví dụ bình thường signin_signup hoạt động tốt. Nhưng bất cứ khi nào tôi nhấp vào liên kết để đăng nhập vào mạng xã hội (tức là, facebook, twitter) chuyển hướng tôi đến (MY_BASE_URL/index.php? hauth.start = Facebook & hauth.time) mà không hiển thị bất kỳ cửa sổ đăng nhập/thông báo lỗi nào cả.

Tôi đã đọc kỹ các tài liệu và giải pháp khác được đăng tại đây. config.php để có một url cơ sở như http://example.com/index.php.Nhưng nó chỉ không trả lời.Tôi có một cái gì đó tôi đang mất tích? Tôi đã dành 2 ngày đã có trên nó. e là config.php của tôi

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" => "" 
    ); 

Ai đó có thể giúp tôi? Tôi có cảm giác rằng nó không hoạt động rất tốt sau khi tìm kiếm trên internet trong một thời gian dài. Nếu đó là trường hợp, ai đó có thể trỏ đến một thư viện đăng nhập thay thế/thư viện đăng nhập xã hội thay thế tốt hơn?

+0

Mọi người đều có lời khuyên? Thực sự thất vọng ... – tintinboss

Trả lời

22

Tiếp tục đến câu trả lời của riêng tintinboss, tôi thấy tôi cần thiết để kiểm tra hauth_done cũng (điều này là một ví dụ thử nghiệm Facebook):

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

này cuối cùng đã nhận nó làm việc - cảm ơn bạn tintinboss cho câu trả lời hữu ích !

+1

Điều này giải quyết vấn đề của tôi! +1 – Victor

19

Được rồi, tôi đã tự giải quyết.

Như đã nêu trước đây, tài liệu thực sự không tốt. Đây là giải pháp cho bất cứ ai muốn tích hợp mã này trong tương lai

Trước hết, bạn cần phải thực hiện baseurl của bạn như thế này trong config.php

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

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

Lưu ý rằng tôi không sử dụng www. Không biết tại sao, nhưng nó không hoạt động với www.

Bây giờ là phần khó khăn, bạn phải bao gồm này trong file index.php của bạn

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

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

     } 

Quá trình Endpoint là những gì làm cho bạn chuyển hướng đến một trang trống nếu không được cung cấp. Và bạn phải thêm nó vào index.php theo như tôi đã thử nghiệm.

Bây giờ mã sẽ hoạt động tốt :) Tôi sẽ rất vui nếu nó giúp ai đó.

+6

Cảm ơn. Tôi không biết tại sao những thứ tầm thường như 'trình diễn làm việc' dường như làm cho mọi người lảng tránh. Vâng, tôi biết không phải mọi kịch bản đều có thể được bao phủ, nhưng tôi không chắc mình có thể tự mình tìm được Hybrid_Endpoint :: process() hay không. Ngoài ra, tôi sẽ ném điều đó cho Google, ít nhất, nó yêu cầu url chuyển hướng đã đăng ký và hauth.done = Google cần phải là một phần của chuyển hướng đã đăng ký của bạn với Google, theo như tôi có thể biết (chỉ có cách nó làm việc cho tôi). Một lần nữa, cảm ơn. – mgkimsal

+0

Ngoài ra có www trong url trang bạn đang cố gắng để kiểm tra trên spanners nó là tốt. – Ally

+0

Dành thời gian để tìm hiểu lý do tại sao tôi không được chuyển hướng và chỉ nhận được ''lớp' không tìm thấy'. Tôi thậm chí đã xóa tất cả các quy tắc .htaccess và xóa lược đồ tải tự động của tôi để tìm ra tôi chỉ phải xóa 'www.' từ url cơ sở ... Câu trả lời của bạn được đánh giá cao! Cảm ơn bạn. – Ben

7

@tintinboss và @dJomp câu trả lời đã sắp xếp cho tôi. tuy nhiên tôi vẫn cần phải nhận thông tin từ người dùng đã đăng nhập, điều này đã khiến tôi thực sự mất nhiều thời gian. Ở đây tôi chia sẻ phiên bản cuối cùng sẽ giúp bạn tránh xa vòng lặp khủng khiếp này.

$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

Xin chào Tôi đã thử tất cả các đề xuất giải pháp cho vấn đề này nhưng không có giải pháp nào đạt được giải pháp. Tôi đã giải quyết vấn đề như thế này.

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

Điểm mấu chốt ở đây là tên máy chủ.Ngoài ra, cookie đang ghi lại các phiên của bạn và bạn không thể xem trước các thay đổi bạn đã thực hiện. Xóa cookie và thử lại.