Поработав некоторое время, я собираюсь ответить на свой вопрос. Вот как я заставляю его работать, чтобы вы могли изменить его в соответствии со своими потребностями.
Примечание: я использую userController вместо siteController, и, пожалуйста, следуйте всем инструкциям на соответствующей странице расширения.
Если вы использовали два плагина, как указано выше, то, что вам нужно сделать дальше, чтобы заставить его работать, это следующее: (это пошаговое руководство)
Но наиболее важными шагами являются 2c и 3, они являются клеем для обоих плагинов
1) Иметь страницу входа, которая использует OpenidSelector. Поместите это в views / user / login.php
<?php
$this->widget('application.extensions.openidProviders.openidProviders',
array ( 'options' => array ( 'lang' => 'en',
// 'demo' => 'js:true',
'cookie_expires' => 6*30,
)));?>
2) Настройка действий для обработки выбора из openidSelector. Я положил это в userController.
a) В основном конфигурационном файле.
'components'=>array(
'user'=>array(
// enable cookie-based authentication
'allowAutoLogin'=>true,
'loginUrl' => array('/user/login'), //change the default login page
),
b) В файле userController добавьте логин и выполните аутентификацию действий
array('allow', // allow all users to perform 'index' and 'view' actions
'actions'=>array('login', 'authenticate'),
Код для действия # 1 actionLogin - для запуска страницы просмотра входа в систему.
public function actionLogin()
{
// display the login form
$this->render('login',array());
}
c) Код для действия # 2 actionAuthenticate - код, измененный со страницы инструкции LOID, он обрабатывается, когда на странице входа в систему выбран OpenIDProvider.
public function actionAuthenticate ()
{
// Put the Simple usage: code on
// http://www.yiiframework.com/extension/loid here:
// Code from loid Simple usage page.
// START HERE
$loid = Yii::app()->loid->load();
if (!empty($_GET['openid_mode'])) {
if ($_GET['openid_mode'] == 'cancel') {
$err = Yii::t('core', 'Authorization cancelled');
} else {
try {
echo $loid->validate() ? 'Logged in.' : 'Failed';
} catch (Exception $e) {
$err = Yii::t('core', $e->getMessage());
}
}
if(!empty($err)) echo $err;
} else {
// **NOTE:Comment out this line from the loid sample page**
// $loid->identity = "http://my.openid.identifier"; //Setting identifier
// this openid_identifier is need after you click the openselector
$loid->identity = $_GET['openid_identifier']; // CHANGE HERE
$loid->required = array('namePerson/friendly', 'contact/email'); //Try to get info from openid provider
$loid->realm = (!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'];
$loid->returnUrl = $loid->realm . $_SERVER['REQUEST_URI']; //getting return URL
if (empty($err)) {
try {
$url = $loid->authUrl();
$this->redirect($url);
} catch (Exception $e) {
$err = Yii::t('core', $e->getMessage());
}
}
}
// Code from loid Simple usage page.
// END HERE
}
3) Измените URL действия на Аутентификацию в openidProviders / views / main-en.php
Изменение
form action="examples/consumer/try_auth.php" method="get" id="openid_form"
до
form action="authenticate" method="get" id="openid_form"
Так и должно быть. Не проверял случай сбоя, проверял только при входе в Google.