Подтвердить что ты не робот

PHP HybridAuth социальный signin не работает вообще. Перенаправление на? Hauth.start = Facebook & hauth.time

Я пытаюсь сделать работу в социальных сетях HybridAuth на этом простом php-сайте. Загрузили HybridAuth и установили его. Затем выяснилось, что даже примеры не работают для социального входа (тоже на удаленном сервере.

Обычный пример signin_signup работает нормально. Но всякий раз, когда я нажимаю ссылку для входа в социальную сеть (т.е. Facebook, twitter), она перенаправляет меня на (MY_BASE_URL/index.php? Hauth.start = Facebook & hauth.time), не отображая никаких сообщений в окне/сообщениях об ошибках вообще.

Я внимательно прочитал документацию и другие решения, размещенные здесь. Скорректировал мой config.php, чтобы иметь базовый url, например http://example.com/index.php. Но он просто не отвечает. Есть что-то, что мне не хватает? Я потратил 2 дня на это.

вот мой 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" => ""
    );

Может кто-нибудь мне помочь? У меня возникло ощущение, что он не работает очень хорошо после поиска в Интернете довольно долго. Если это так, может ли кто-нибудь указать на лучшую альтернативную библиотеку openource/free social signin?

4b9b3361

Ответ 1

В дополнение к собственному ответу tintinboss, я обнаружил, что мне нужно было проверить и hauth_done (это было для примера тестирования Facebook):

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

Это, наконец, получило его работу - спасибо tintinboss за полезный ответ!

Ответ 2

Хорошо, я решил это сам.

Как уже говорилось, документация действительно не очень хорошая. Здесь решение для всех, кто хочет интегрировать этот код в будущем

Во-первых, вы должны сделать свой baseurl следующим образом в config.php

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

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

Обратите внимание, что я не использую www. Не знаю почему, но он не работает с 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, насколько я тестировал.

Теперь код должен работать нормально:) Я буду рад, если он кому-то поможет.

Ответ 3

@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();
    }
}

Ответ 4

Привет, я пробовал все решения этой проблемы, но никто не достиг решения. Я решил эту проблему.

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

Ключевым моментом здесь является имя сервера. Кроме того, файлы cookie записывают ваши сессии, и вы не можете просматривать сделанные вами изменения. Очистите файлы cookie и повторите попытку.

Ответ 5

Мы используем nginx, и мы исправили это, добавив ? $ Args в наш блок местоположения. Без этого запрос не пройдет hauth_done.

location / {
    try_files $uri $uri/ /index.php?$args;
}