PHP HybridAuth: как перенаправить на страницу "Разрешить" выбранной социальной сети?
У меня возникают некоторые проблемы с 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 ответ
Я делаю так, чтобы хранить провайдера и идентификатор провайдера в базе данных, что, похоже, и вы реализовали.
Если пользователь не существует, я создаю его, а затем перенаправляю пользователя в редактор профиля пользователя. В противном случае я просто перенаправить на главную страницу или панель инструментов.
В данных провайдера есть все обязательные поля для создания базового профиля. Если вам нужно что-то еще, перенаправьте пользователя на страницу с формой для него, чтобы завершить регистрацию. Храните все, что вам нужно, в СЕССИИ или подобном. Вы можете использовать $hybridauth->restoreSessionData($_SESSION['HYBRID']), чтобы продолжить сеанс.