Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 谷歌API客户端和访问生日和年龄_Php_Google Api_Google Signin_Google Login - Fatal编程技术网

Php 谷歌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

我正试图通过谷歌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 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);