Google People API无法获得生日年

时间:2016-10-01 09:38:03

标签: android google-people

这是我在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天。请帮忙。

3 个答案:

答案 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仍将不返回任何内容。