Php 谷歌oauth2设置范围?无法收到电子邮件

Php 谷歌oauth2设置范围?无法收到电子邮件,php,email,google-plus,Php,Email,Google Plus,嗨,我在使用谷歌api oauth2作为登录系统,大部分情况下我都得到了我想要的,,,除了电子邮件,在尝试了一整天之后,我不得不寻求帮助。这是我的密码 <?php $client_key = 'xxxxxxxx49-6gplrhtl5xxxxxxx5gerurei0o.apps.googleusercontent.com'; $client_secret = 'WLMQxxxxxxxxxxxxxxofyjv11'; $api_key = '9xxxxxxxx0749'; $scope =

嗨,我在使用谷歌api oauth2作为登录系统,大部分情况下我都得到了我想要的,,,除了电子邮件,在尝试了一整天之后,我不得不寻求帮助。这是我的密码

<?php
$client_key = 'xxxxxxxx49-6gplrhtl5xxxxxxx5gerurei0o.apps.googleusercontent.com';
$client_secret = 'WLMQxxxxxxxxxxxxxxofyjv11';
$api_key = '9xxxxxxxx0749';
$scope = 'https://www.googleapis.com/auth/userinfo#email';
if(!isset($_REQUEST['code'])){
    echo "no Good";
} else {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://accounts.google.com/o/oauth2/token");
    curl_setopt($ch, CURLOPT_POST, TRUE);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, "code=".$_REQUEST['code']."&client_id=".$client_key."&client_secret=".$client_secret."&redirect_uri=https://localhost/admin/index.php&grant_type=authorization_code");
    $data = curl_exec($ch); 
    curl_close();
    $data = json_decode($data);
    //var_dump($data);
    $access_token = $data->access_token;
    echo $access_token;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://www.googleapis.com/plus/v1/people/me?access_token=".$access_token);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $data = curl_exec($ch); 
    curl_close();
    $data = json_decode($data);
    echo $data->displayName;
//HERE IS WHERE IM HAVING DRAMA
echo $data->emails->values
    echo "<img src=\"".$data->image->url."\"><br>";
    echo '<pre>';
    var_dump($data);
    echo '</pre><br>';
}
?>

但是我没有运气,所以你的范围字符串在顶部是错误的。最简单的方法就是。。。“电子邮件”!(就像这个词一样,没有引号)

在登录人员之前,请确保您的所有作用域都有效-看起来您希望使用作用域电子邮件和配置文件。这些缩短的版本将被替换。较长的作用域仍然可以工作,但您拥有的其他作用域根本不在作用域中-它们中没有#,并且所有URL表单作用域都在googleapis.com/auth下

还有一个问题-电子邮件将位于电子邮件数组中-因此它将是您要查找的$data->emails[0]->值(如果返回多个,那么检查type字段是否也是“account”也是值得的)

您可以在API资源管理器上尝试:-尝试选择Oauth 2.0切换,删除其中的所有作用域,并将电子邮件和配置文件作为两个自定义作用域

$scope = array('https://www.googleapis.com/auth/userinfo.email','https://www.googleapis.com/plus/v1/people/me','https://www.googleapis.com/auth/userinfo.profile');