PHP Yii2:Google OAuth2客户端库的异常行为

时间:2018-08-22 10:19:58

标签: php oauth-2.0 yii2 google-oauth2

我们在使用PHP yii2框架的应用程序中将google用作OAuth2客户端。准备授权请求时,在buildAuthUrl()方法(OAuth2.php)中正确配置了redirect_uri,并且用户获得了预期的授权。现在,当我们尝试将代码交换为来自Google Server的accessToken时,redirect_uri会以某种方式附加到这样的范围内,即== http://cms.local.com/user/auth/login?authclient=google&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile。 当我们将此请求发送给Google时,我们收到一条HTTP 400错误,消息为 redirect_uri_mismatch 。 奇怪的是,直到昨天它一直运行良好,然后突然我们开始收到来自Google的上述错误(我们尚未在Google Dev Console中更改项目中的URI,我们仔细检查了所有内容)。 是什么原因导致这种突然的不匹配?任何帮助将不胜感激。 谢谢

1 个答案:

答案 0 :(得分:0)

这是由于“ yii-authclient”库的defautlReturnUrl()方法引起的。 “范围”并未从redirect_uri撤消,因此Google抛出了HTTP 400错误的请求错误。 可以通过以下方法避免这种情况:

  1. 在我们指定client_id,client_secret等的组件配置中显式设置returnUrl。
  2. 在defaultReturnUrl()中,将unset ['scope']与'code'和'state'一起使用。