Php 谷歌API客户端和访问生日和年龄
我正试图通过谷歌API登录,并获得一些用户数据,包括生日 这是我正在使用的代码和作用域:Php 谷歌API客户端和访问生日和年龄,php,google-api,google-signin,google-login,Php,Google Api,Google Signin,Google Login,我正试图通过谷歌API登录,并获得一些用户数据,包括生日 这是我正在使用的代码和作用域: <?php set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__ .'/vendor/google/apiclient/src'); require_once __DIR__.'/vendor/autoload.php'; use Symfony\Component\HttpFoundation\Request; use Sy
<?php
set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__ .'/vendor/google/apiclient/src');
require_once __DIR__.'/vendor/autoload.php';
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
const CLIENT_ID = '[MY CLIENT ID]';
const CLIENT_SECRET = '[MY APP SECRET]';
const APPLICATION_NAME = "Google+ PHP Quickstart";
$client = new Google_Client();
$client->setClientId(CLIENT_ID);
$client->setClientSecret(CLIENT_SECRET);
$client->setAccessType("offline"); // offline access
$client->setIncludeGrantedScopes(true); // incremental auth
$client->addScope('https://www.googleapis.com/auth/plus.login');
$client->addScope('https://www.googleapis.com/auth/user.birthday.read');
$client->addScope('https://www.googleapis.com/auth/userinfo.email');
$client->addScope('https://www.googleapis.com/auth/userinfo.profile');
$client->addScope('https://www.googleapis.com/auth/plus.me');
$client->setRedirectUri('https://' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php');
$auth_url = $client->createAuthUrl();
header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
我错过了什么
我看到了一个关于生日的公共或私人可见性的答案,但这似乎是一个奇怪的要求。为什么它会问用户是否允许显示生日,用户说是的,但它不会返回到网站,因为它不是公开的?我想要一些官方的谷歌源文件来说明这一点,而不是没有任何官方参考的答案,因此我希望有人能用任何有力的信息来说明这一点。我目前知道的返回当前用户生日的唯一方法是返回生日。但是我怀疑它与google+有关,所以如果用户没有填写,你可能无法获得信息 获取{resourceName=people/*} 发送
people/me
的资源名和生日personFields
{
"resourceName": "people/117200475532672775346",
"etag": "%EgQBBzcuGgwBAgMEBQYHCAkKCwwiDDQwaGhWYzc3cXJBPQ==",
"birthdays": [
{
"metadata": {
"primary": true,
"source": {
"type": "PROFILE",
"id": "117200475532672775346"
}
},
"date": {
"month": 1,
"day": 6
}
},
{
"metadata": {
"source": {
"type": "ACCOUNT",
"id": "117200475532672775346"
}
},
"date": {
"year": 1971,
"month": 1,
"day": 6
}
}
]
更新:
$optParams = array(
'personFields' => 'birthdays',
);
$results = $service->people->get('people/me', $optParams);
我现在没有权限测试php这是一个有根据的猜测。可能是@DaImTo的副本我看到了这个答案,但这似乎是一个奇怪的要求。为什么它会问用户是否允许显示生日,用户说是的,但它不会返回到网站,因为它不是公开的?我想要一些官方的谷歌源文件来说明这一点,而不是没有任何官方参考的答案,所以我希望有人能用任何有力的信息来支持这一点。因为谷歌+API是极其有限的,在谷歌开始这个项目之前,没有任何错误或问题被修复。但这只是我作为一个开发者的观点,他花了很多年的时间试图让它正常工作,却从来没有从谷歌的每个人那里得到任何反馈asked@DaImTo还有其他选择吗?谷歌是否为身份验证提供了google+API的替代方案?你能提供一个如何使用google sdk调用它的示例吗?找不到关于那个的参考资料。我发现了这个,但是我在$people\u service=newgoogle\u service\u PeopleService($client)上发现了一个找不到的错误;他们有一个样本在这里检查更新
$optParams = array(
'personFields' => 'birthdays',
);
$results = $service->people->get('people/me', $optParams);