PHP HybridAuth: как перенаправить на страницу «Разрешить» выбранной социальной сети? - PullRequest
1 голос
/ 14 декабря 2011

У меня возникают некоторые проблемы с HybridAuth, когда мне нужно перенаправить «незарегистрированного пользователя в моей локальной базе данных» в выбранную социальную сеть: facebook, twitter, windows live, linkedin, openid и т. Д.страницы «Разрешить» и «Отмена»!?

До сих пор у меня есть такой код:

try {
    // $via for instance can be: Twitter, Facebook, etc
    $hybridauth = new Hybrid_Auth( $myConfig );
    $via = ucfirst($via);
    $adapter = $hybridauth->authenticate( $via ); // from this line some redirecting accoures

    if( $hybridauth->isConnectedWith( $via ) ){
        $user = $hybridauth->authenticate($via)->getUserProfile();
    }

    $profile = Users::model()->findByAttributes(array(
        'networkName' => $via,
        'networkId' => $user->identifier,
    ));

    if(!is_null($profile)) {
        // do a login
    } else {
        // do a registration + login
    }
} catch(Exception $e) {
    echo "Error: please try again!";
    echo "Original error message: " . $e->getMessage();
    die();
}

Надеюсь, я ясно изложил свою точку зрения.Спасибо за помощь в этом вопросе!

1 Ответ

1 голос
/ 13 января 2012

Я могу сохранить провайдера и идентификатор провайдера в базе данных, что, похоже, и вы реализовали.

Если пользователя не существует, я создаю его, а затем перенаправляю пользователя в редактор профиля пользователя. В противном случае я просто перенаправляю на главную страницу или панель инструментов.

В данных провайдера есть все обязательные поля для создания базового профиля. Если вам нужно что-то еще, перенаправьте пользователя на страницу с формой для него, чтобы завершить регистрацию. Храните все, что вам нужно, в СЕССИИ или аналогичном. Вы можете использовать $ hybridauth-> restoreSessionData ($ _ SESSION ['HYBRID']), чтобы оставить сеанс включенным.

...