我正在尝试通过Google 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));
当我看到登录界面时,我被要求允许该应用程序访问我的生日,如下所示(它是葡萄牙文,但它提到了出生日期!)。
尽管如此,我无法访问生日或日期。
这是我用来在回调页面上获取用户信息的内容:
$objOAuthService = new Google_Service_Oauth2($client);
if ($client->getAccessToken()) {
$userData = $objOAuthService->userinfo->get();
print_r($userData);
}
我错过了什么?
我看到了关于生日的公共或私人可见性的答案,但这似乎是一个奇怪的要求。为什么它询问用户是否允许显示生日,用户说是,并且它不会返回到网站,因为它不公开?我想要一些正式的谷歌源文件说明这一点,而不是没有任何官方参考的答案,所以我希望有人能够提供一些有用的信息来支持这一点。
答案 0 :(得分:1)
我目前知道返回当前用户生日的唯一方法是People.get确实返回生日。但是我怀疑它与谷歌+相关联,所以如果用户没有填写它,你可能不会得到信息。
获取https://people.googleapis.com/v1/ {resourceName = people / *}
发送资源名称 <div class="row">
<div class="block" width="320" height="200">
<img src="a.jpg"></img>
<span>a.jpg</span>
</div>
<div class="block" width="320" height="200">
<img src="b.jpg"></img>
<span>b.jpg</span>
</div>
<div class="block" width="320" height="200">
<img src="c.jpg"></img>
<span>c.jpg</span>
</div>
<div class="block" width="320" height="200">
<img src="d.jpg"></img>
<span>d.jpg</span>
</div>
<div class="block" width="320" height="200">
<img src="e.jpg"></img>
<span>e.jpg</span>
</div>
<div class="block" width="320" height="200">
<img src="e.jpg"></img>
<span>e.jpg</span>
</div>
<div class="block" width="320" height="200">
<img src="e.jpg"></img>
<span>e.jpg</span>
</div>
<div class="block" width="320" height="200">
<img src="e.jpg"></img>
<span>e.jpg</span>
</div>
<div class="block" width="320" height="200">
<img src="e.jpg"></img>
<span>e.jpg</span>
</div>
<div class="block" width="320" height="200">
<img src="e.jpg"></img>
<span>e.jpg</span>
</div>
<div class="block" width="320" height="200">
<img src="e.jpg"></img>
<span>e.jpg</span>
</div>
<div class="block" width="320" height="200">
<img src="e.jpg"></img>
<span>e.jpg</span>
</div>
<div class="block" width="320" height="200">
<img src="e.jpg"></img>
<span>e.jpg</span>
</div>
<div class="block" width="320" height="200">
<img src="e.jpg"></img>
<span>e.jpg</span>
</div>
<div class="block" width="320" height="200">
<img src="e.jpg"></img>
<span>e.jpg</span>
</div>
<div class="block" width="320" height="200">
<img src="e.jpg"></img>
<span>e.jpg</span>
</div>
</div>
和生日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
}
}
]
我现在无法访问测试php这是一个有根据的猜测。