Oauth yii2中的AuthAction
我正在尝试实现yii\authclient\AuthAction的successCallback 我的代码如下所示:Oauth yii2中的AuthAction,oauth,yii2,Oauth,Yii2,我正在尝试实现yii\authclient\AuthAction的successCallback 我的代码如下所示: public function actions() { return [ 'auth' => [ 'class' => 'yii\authclient\AuthAction', 'successCallback' => [$this, 'successCallback'], ], ];
public function actions()
{
return [
'auth' => [
'class' => 'yii\authclient\AuthAction',
'successCallback' => [$this, 'successCallback'],
],
];
}
/**
* @param \yii\authclient\ClientInterface $client
*/
public function successCallback($client)
{
$attributes = $client->getUserAttributes();
$externalUser = new AuthForm();
$externalUser->authProvider = $client->getName();
$externalUser->externalUserId = array_key_exists('id', $attributes) ? $attributes['id'] : null;
if ($externalUser->validate())
{
if ($externalUser->isRegistered())
{
$externalUser->login();
return $this->redirect(['private/index']);
}
else
{
Yii::$app->session->set( 'signup/authProvider', $externalUser->authProvider );
Yii::$app->session->set( 'signup/attributes' , $attributes );
return $this->redirect(['site/signup']);
}
}
}
如何调用successCallback?我想调用auth方法。但我不能这样做吗 这很可能工作正常,但您不允许访问
auth
的操作。确保在控制器的行为中允许auth
。比如:
public function behaviors() {
$behaviors = parent::behaviors();
$behaviors [ 'access' ] = [
'rules' => [
[
'actions' => [ 'auth' ],
'allow' => true,
],
],
];
return $behaviors;
}
当身份验证服务器响应成功时,它将运行
successCallback
。
必须配置authcollection(auth服务器的集合配置)
默认值:Yi2 authclient支持某些openid、oauth、oauth2提供程序:
- [\yii\authclient\clients\Facebook | Facebook]]
- [[yii\authclient\clients\GitHub | GitHub]]
- 谷歌(通过[[yii\authclient\clients\GoogleOpenId | OpenID]]和[[yii\authclient\clients\GoogleOAuth | OAuth]])
- [[yii\authclient\clients\LinkedIn | LinkedIn]]
- [[yii\authclient\clients\Live | Microsoft Live]]
- [[yii\authclient\clients\Twitter | Twitter]]
- [[yii\authclient\clients\VKontakte | VKontakte]]
- Yandex(通过[[yii\authclient\clients\YandexOpenId | OpenID]]和[[yii\authclient\clients\YandexOAuth | OAuth]])
<?= yii\authclient\widgets\AuthChoice::widget([
'baseAuthUrl' => ['site/auth'],
'popupMode' => false,
]) ?>
有关更多信息:
祝你好运,玩得开心 $externalUser->login()代码>您想调用登录函数,但用户不登录?
<?= yii\authclient\widgets\AuthChoice::widget([
'baseAuthUrl' => ['site/auth'],
'popupMode' => false,
]) ?>