使用 Google API 获取用户生日
Posted
技术标签:
【中文标题】使用 Google API 获取用户生日【英文标题】:Get user birthday with Google API 【发布时间】:2015-03-29 04:54:55 【问题描述】:我正在使用 Google API 来帮助用户登录我的网站。我可以在使用 API 登录期间提取他们的姓名、区域设置、个人资料图片、性别和 ID,但我无法获得他们的生日。
我将如何使用 API 让他们过生日?
代码:
session_start();
$google_client_id = 'xx';
$google_client_secret = 'xx';
$google_redirect_url = 'xx';
$google_developer_key = 'xx';
require_once 'Google_Client.php';
require_once 'contrib/Google_Oauth2Service.php';
$gClient = new Google_Client();
$gClient->setApplicationName('xx');
$gClient->setClientId($google_client_id);
$gClient->setClientSecret($google_client_secret);
$gClient->setRedirectUri($google_redirect_url);
$gClient->setDeveloperKey($google_developer_key);
$gClient->setScopes(array('email', 'https://www.googleapis.com/auth/plus.login'));
$google_oauthV2 = new Google_Oauth2Service($gClient);
if (isset($_GET['code']))
$gClient->authenticate($_GET['code']);
$_SESSION['token'] = $gClient->getAccessToken();
if (isset($_SESSION['token']))
$gClient->setAccessToken($_SESSION['token']);
if ($gClient->getAccessToken())
$user = $google_oauthV2->userinfo->get();
$user_google_id = $user['id'];
$user_name = filter_var($user['name'], FILTER_SANITIZE_SPECIAL_CHARS);
$user_first_name = filter_var($user['given_name'], FILTER_SANITIZE_SPECIAL_CHARS);
$user_last_name = filter_var($user['family_name'], FILTER_SANITIZE_SPECIAL_CHARS);
$user_gender = filter_var($user['gender'], FILTER_SANITIZE_SPECIAL_CHARS);
$user_country = filter_var($user['locale'], FILTER_SANITIZE_SPECIAL_CHARS);
$user_age = filter_var($user['birthday'], FILTER_SANITIZE_SPECIAL_CHARS);
$user_email = filter_var($user['email'], FILTER_SANITIZE_EMAIL);
$profile_url = filter_var($user['link'], FILTER_VALIDATE_URL);
$profile_image_url = filter_var($user['picture'], FILTER_VALIDATE_URL);
$user_image = "$profile_image_url?sz=150";
$_SESSION['token'] = $gClient->getAccessToken();
【问题讨论】:
【参考方案1】:请看这里:How to specify the scope of Google API to get the birthday。总之:您必须请求具有特定范围的访问令牌,例如https://www.googleapis.com/auth/plus.login
并且用户必须将他/她的生日信息设置为public
。
【讨论】:
以上是关于使用 Google API 获取用户生日的主要内容,如果未能解决你的问题,请参考以下文章
请求的身份验证范围不足 - 在 Flutter 中使用 Firebase 从 Google 登录获取生日时出错
如何在现有的 Cognito 用户池中获取生日? (放大 iOS)
如何使用 FirebaseAuth 从 Google 提供商处获取性别和生日?
如何使用 FirebaseAuth 从 Google 提供商处获取性别和生日?