这是我在stackoverflow中的第一个问题。当我试图获得用户生日年份时,我遇到了Google People API的问题。这是来自我的logcat的日志。
D/FitPartners: {"date":{"day":20,"month":1},"metadata":{"primary":true,"source":{"id":"1....41","type":"PROFILE"}}}
正如你所看到的,我可以把月份和日期都搞定。但是,那里没有一年。即使我正在使用谷歌尝试它!来自https://developers.google.com/people/api/rest/v1/people/get。答案也没有给出年份。
Response
200 OK
- Show headers -
{
"resourceName": "people/1.......41",
"etag": "r....a4o=",
"birthdays": [
{
"metadata": {
"primary": true,
"source": {
"type": "PROFILE",
"id": "1........41"
}
},
"date": {
"month": 1,
"day": 20
}
}
]
}
我一直试图弄清楚这一点,并在决定提出问题之前从stackoverflow搜索了4天。请帮忙。
答案 0 :(得分:1)
如果您想验证此人的年龄,请查看age range字段是否符合您的需求。您可以通过请求https://www.googleapis.com/auth/profile.agerange.read范围来获取它。
答案 1 :(得分:0)
People API返回2个生日,第一个生日只有日期和月份,第二个也有年份。这是Java代码的片段
public static String getBirthday(Person person) {
try {
List<Birthday> birthdayList = person.getBirthdays();
if (birthdayList == null) return Utils.EMPTY_STRING;
Date date = null;
for (Birthday birthday : birthdayList) {
date = birthday.getDate();
if (date != null && date.size() >= 3) break; // 3 means included day, month and year
else date = null;
}
if (date == null) return Utils.EMPTY_STRING;
Calendar calendar = Calendar.getInstance();
calendar.set(date.getYear(), date.getMonth() - 1, date.getDay());
return Utils.convertDateToString(calendar);
} catch (Exception e) {
Utils.handleException(e);
return Utils.EMPTY_STRING;
}
}
答案 2 :(得分:0)
缺少出生年份的另一个原因是您的生日是1970年1月1日。在这种情况下,API不会返回您的生日。
如果您已禁用Google Plus个人资料上的年份显示,则PROFILE将返回1月1日,而ACCOUNT仍将不返回任何内容。