Oauth Yii 2-authclient不调用AuthSuccess

Oauth Yii 2-authclient不调用AuthSuccess,oauth,yii,yii2,yii2-advanced-app,yii2-authclient,Oauth,Yii,Yii2,Yii2 Advanced App,Yii2 Authclient,我正在使用Yii authclient使用社交登录。我已经按照中的定义设置了所有内容,但当我尝试使用google登录时,它不会调用AuthSuccess方法。当我尝试登录时,它只是将我重定向到returnUrl,但没有经过身份验证。 这是我的密码 config/main.php 控制器/站点控制器 如果设置returnUrl,则用户将从身份验证提供程序直接重定向到您在该属性中设置的url 在您的例子中,返回URL显示google,它应该将用户重定向到http://localhost/site/l

我正在使用Yii authclient使用社交登录。我已经按照中的定义设置了所有内容,但当我尝试使用google登录时,它不会调用AuthSuccess方法。当我尝试登录时,它只是将我重定向到returnUrl,但没有经过身份验证。 这是我的密码

config/main.php

控制器/站点控制器


如果设置returnUrl,则用户将从身份验证提供程序直接重定向到您在该属性中设置的url

在您的例子中,返回URL显示google,它应该将用户重定向到http://localhost/site/landing. 但是在你的站点/登陆行动中没有什么可以称之为成功

在处理OAuth提供程序的响应后,您需要让用户返回站点/auth并重定向它们。为此,请从配置中删除returnUrl。这将使authclient使用默认的返回url,该url是启动auth进程的操作

然后修改onAuthSuccess以将用户重定向到站点/登录,如下所示:

public function onAuthSuccess($client)
{
    (new AuthHandler($client))->handle();
    $this->redirect(['site/landing']);
}

我在@Michal Hynčica的帮助下解决了这个问题。问题出在我的returnUrl中,这意味着它必须遵循身份验证url进行身份验证,而不是身份验证后的重定向。所以我需要做的就是把它改成如下

    'returnUrl' => 'http://localhost/site/auth?authclient=google'

另外,不要忘记将相同的returnUrl添加到谷歌控制台的重定向url。

您好,Michael,谢谢您的回复,但是删除returnUrl会导致重定向uri不匹配错误。它应该在主配置中可用。还有其他想法吗?这可能是因为google api控制台中设置的授权重定向uri与auth action使用的uri不匹配。您可能已将其设置为http://localhost/site/landing 但是您需要添加auth操作使用的url。可能是http://localhost/site/auth?authclient=googleI 刚刚解决了问题,谢谢你,迈克尔,非常感谢你的帮助。
public function onAuthSuccess($client)
{
    (new AuthHandler($client))->handle();
    $this->redirect(['site/landing']);
}
    'returnUrl' => 'http://localhost/site/auth?authclient=google'