yii2, google outh2 and scope


yii2, google outh2 and scope

我正在使用Yii2、GoogleOAuth和Yii2用户扩展。我想接收用户谷歌圈子并将范围设置为我的配置:

'authClientCollection' => [
        'class' => 'yii'authclient'Collection',
        'clients' => [
            'google' => [
                'class' => 'yii'authclient'clients'GoogleOAuth',
                'clientId' => '758709912345-p4qp4lqihit5un1u6qb75msqp5m5j6d8.apps.googleusercontent.com',
                'clientSecret' => 'ZygOIi1-0asfktUQ1pKOFOo',
                'scope' => 'https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/drive',
            ],
        ],
    ]

当我用谷歌OAuth2登录时,我出现了错误:

异常–yii''authclient''InvalidResponseException请求失败,代码:400,消息:{"error":"redirect_uri_mismatch"}

谷歌回应:

[
'url' => 'https://accounts.google.com/o/oauth2/token'
'content_type' => 'application/json'
'http_code' => 400
'header_size' => 435
'request_size' => 644
'filetime' => -1
'ssl_verify_result' => 0
'redirect_count' => 0
'total_time' => 0.115431
'namelookup_time' => 0.001186
'connect_time' => 0.025188
'pretransfer_time' => 0.076275
'size_upload' => 456
'size_download' => 39
'speed_download' => 337
'speed_upload' => 3950
'download_content_length' => -1
'upload_content_length' => 456
'starttransfer_time' => 0.114206
'redirect_time' => 0
'certinfo' => []
'primary_ip' => '2a00:1450:4010:c08::54'
'primary_port' => 443
'local_ip' => '2a03:6f00:1::5c35:726b'
'local_port' => 33160
'redirect_url' => ''

]

当我从配置Google+范围中删除时(https://www.googleapis.com/auth/plus.login)授权出错,谷歌的回应是:

[
'url' => 'https://accounts.google.com/o/oauth2/token'
'content_type' => 'application/json; charset=utf-8'
'http_code' => 200
'header_size' => 522
'request_size' => 526
'filetime' => -1
'ssl_verify_result' => 0
'redirect_count' => 0
'total_time' => 0.13719
'namelookup_time' => 0.001212
'connect_time' => 0.026261
'pretransfer_time' => 0.079765
'size_upload' => 338
'size_download' => 900
'speed_download' => 6560
'speed_upload' => 2463
'download_content_length' => -1
'upload_content_length' => 338
'starttransfer_time' => 0.136241
'redirect_time' => 0
'certinfo' => []
'primary_ip' => '2a00:1450:4010:c08::54'
'primary_port' => 443
'local_ip' => '2a03:6f00:1::5c35:726b'
'local_port' => 37583
'redirect_url' => ''

]

仅在https://www.googleapis.com/auth/plus.login中出现问题。我启用的API:http://minus.com/lJ5nw7caXJApD

您还可以在身份验证客户端配置中显式添加returnUrl。查看文档了解更多信息。

我也遇到了这个问题,并获得了更改项目凭据中重定向URI的解决方案,如下所示:

重定向URI

 http://mysiteurl.com/user/sign-in/oauth?authclient=google
 http://mysiteurl.com/oauth2callback

JavaScript起源

 http://mysiteurl.com
Use return URL in main.php like 
'authClientCollection' => [
          'class' => 'yii'authclient'Collection',
          'clients' => [
            'facebook' => [
              'class' => 'yii'authclient'clients'Facebook',
              'authUrl' => 'https://www.facebook.com/dialog/oauth?display=popup',
              'clientId' => ['FacebookClientId'],
              'clientSecret' => ['FacebookClientSecret'],
              'attributeNames' => ['name','first_name','last_name','email','gender','picture','age_range']
            ],
           'google' => [
              'class' => 'yii'authclient'clients'Google',
              'clientId' => ['GoogleClientId'],
              'clientSecret' => ['GoogleClientSecret'],
              'returnUrl' => 'http://yoursite.com/site/auth?authclient=google'
            ],
          ],
        ],

Also set redirect_url in api credentials same as return url
It's work for me.