为了账号安全,请及时绑定邮箱和手机立即绑定

使用谷歌客户端 api php 获取登录用户

使用谷歌客户端 api php 获取登录用户

PHP
墨色风雨 2022-11-12 10:28:45
我设置了一个应用程序,供用户在他们的日历中插入事件。我需要验证他们是否使用正确的谷歌帐户登录。(工作电子邮件)。我已经在网上搜索了几个小时,但没有运气。我尝试了几种不同的方法,但都没有运气:/我希望有人可以指导我或帮助我让它发挥作用。谢谢!这是我所拥有的$client = new Google_Client();$client->setApplicationName("Intakes Calendar");$client->setClientId('xxxxxxxx.apps.googleusercontent.com');$client->setClientSecret('xxxxx');$client->setRedirectUri('xxx');$client->setDeveloperKey('xxx');$client->setScopes(array('https://www.googleapis.com/auth/calendar'));$client->addScope('https://www.googleapis.com/auth/userinfo.email');if (isset($_GET['code'])) {    $client->authenticate($_GET['code']);    $_SESSION['token'] = $client->getAccessToken();}if (isset($_SESSION['token'])) {    //echo "<br>Getting access";    $client->setAccessToken($_SESSION['token']);}if ($client->getAccessToken()){    if($client->isAccessTokenExpired()) {        $authUrl = $client->createAuthUrl();        $button =  '<a class="btn btn-success btn-sm" href="'.$authUrl.'">SIGN IN</a>';        $msg = '<DIV class="col-md-6 col-md-offset-3 alert alert-warning">You are not signed in with your work email account for remote sessions.' . $button . '</DIV>';    }else{        //if logged in check for user email         if($_SESSION['USER_EMAIL'] == 'GOOGLE LOGGED IN EMAIL?')            $msg = ' <DIV class="col-md-6 col-md-offset-3 alert alert-warning">You are connected and ready for remote sessions.</DIV>';        else            $msg = ' <DIV class="col-md-6 col-md-offset-3 alert alert-warning">Please log in with your work email.</DIV>';    }}else{    $authUrl = $client->createAuthUrl();    $button =  '<a class="btn btn-success btn-sm" href="'.$authUrl.'">SIGN IN</a>';    $msg = '<DIV class="col-md-6 col-md-offset-3 alert alert-warning">You are not signed in with your work email account for remote sessions.' . $button . '</DIV>';}
查看完整描述

1 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

终于想通了!!!


首先,您必须添加 gmail 的范围


$client->addScope('https://www.googleapis.com/auth/gmail.readonly');

然后启动 gmail 服务和用户个人资料电子邮件地址


$gmailService = new Google_Service_Gmail($client);

$users = $gmailService->users->getProfile('me');

echo $users['emailAddress']; //this is the logged in user's email address


查看完整回答
反对 回复 2022-11-12
  • 1 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信