已弃用的 google plus api 的替代解决方案是啥?
Posted
技术标签:
【中文标题】已弃用的 google plus api 的替代解决方案是啥?【英文标题】:What is the alternative solution of deprecated google plus api?已弃用的 google plus api 的替代解决方案是什么? 【发布时间】:2019-06-23 15:43:08 【问题描述】:Google 宣布在 3 月 7 日弃用所有 google plus api,我正在使用 oauth2 的 google plus api,所以我担心如果是,我的 https://www.googleapis.com/plus/v1/people/me 也会被弃用,而不是替代解决方案。 .
//index.php
<?php
include('constant.php');
include('google-login-api.php');
// include constant.php
// include google-api library
if(isset($_GET['code']))
$gapi = new GoogleLoginApi();
// Get the access token
$data = $gapi->GetAccessToken(GOOGLE_CLIENT_ID, GOOGLE_CLIENT_REDIRECT_URL, GOOGLE_CLIENT_SECRET, $_GET['code']);
if(is_array($data) && count($data)>0)
// Get user information
$user_info = $gapi->GetUserProfileInfo($data['access_token']);
echo "<pre>";
print_r($user_info);
else
//html code
?>
<a class="sign-in sign-google" href="<?php echo GOOGLE_API_URL; ?>"><i class="fa fa-google-plus"aria-hidden="true"></i>Sign In with Google</a>
<?php
?>
//google-login-api.php
<?php
class GoogleLoginApi
public function GetAccessToken($client_id, $redirect_uri, $client_secret, $code)
$url = 'https://accounts.google.com/o/oauth2/token';
$curlPost = 'client_id=' . $client_id . '&redirect_uri=' . $redirect_uri . '&client_secret=' . $client_secret . '&code='. $code . '&grant_type=authorization_code';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = json_decode(curl_exec($ch), true);
$http_code = curl_getinfo($ch,CURLINFO_HTTP_CODE);
if($http_code != 200)
throw new Exception('Error : Failed to receieve access token');
return $data;
public function GetUserProfileInfo($access_token)
$url = 'https://www.googleapis.com/plus/v1/people/me';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer '. $access_token));
$data = json_decode(curl_exec($ch), true);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($http_code != 200)
throw new Exception('Error : Failed to get user information');
return $data;
?>
这是我正在使用的代码,它运行完美......但问题是在 3 月 7 日之后仍在运行
【问题讨论】:
这看起来像是一个 XY 问题。您有一个问题,您使用 Google Plus API 解决了这个问题。现在你想要一个不同的解决方案。了解您当前使用的解决方案并不能告诉我们很多事情。您应该解释您要解决的问题。 @Quentin 这种方法已于 3 月 7 日被弃用..是否有任何其他不会被弃用的使用 gmail 登录的解决方案 【参考方案1】:Google Plus API(或至少 API 的 plus.people 部分)的粗略替代是 Google People API。它基本上做同样的事情(返回用户的配置文件信息),尽管在请求的完成方式和响应的格式方面有一些变化。最大的不同是您需要准确地请求您想要接收的字段。
为了获得information for the user,您需要将$url
设置为类似于
$fields = 'names,emailAddresses';
$url = 'https://people.googleapis.com//v1/people/me?personFields='+$fields;
您可以在reference for people.get 中查看personFields
参数的可能值以及对访问有效的OAuth 范围。
【讨论】:
我不会把 people api 称为 google+ 的替代品。它更像是谷歌联系人的替代品。 它以大致相同的方式提供对个人资料的访问,包括“我”绰号,但我已经澄清了。 替换此网址后,我收到此错误“无法获取用户信息” 这就是您生成的错误。你得到的 HTTP 响应代码是什么?你要求什么范围?您使用了哪些字段?也许更新您的原始问题以包含这些更改,而不删除您的原始代码?【参考方案2】:更改网址,
$url = 'https://www.googleapis.com/plus/v1/people/me';
到,
$url = 'https://www.googleapis.com/oauth2/v3/userinfo';
我有同样的问题,解决了here
【讨论】:
以上是关于已弃用的 google plus api 的替代解决方案是啥?的主要内容,如果未能解决你的问题,请参考以下文章
已弃用的 AudioManger.setStreamMute 的替代方案?
macOS 10.8 (Mountain Lion) 之后已弃用的资源 'CurResfile'、'UseResFile' 等的替代 API
替代已弃用的 AudioManager.isWiredHeadsetOn?