7

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

4

3 回答 3

1

如果您想验证此人的年龄,或许可以查看年龄范围字段是否满足您的需求。您可以通过请求https://www.googleapis.com/auth/profile.agerange.read范围来获取它。

于 2016-11-21T06:21:00.087 回答
0

缺少出生年份的另一个原因是您的生日是 1970 年 1 月 1 日。在这种情况下,API 不会返回您的生日。

如果您在 Google plus 个人资料上禁用了年份显示,则 PROFILE 将返回 1 月 1 日,而 ACCOUNT 仍将不返回任何内容。

于 2019-03-19T01:07:34.233 回答
-1

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;
        }
    }
于 2018-10-14T08:43:40.370 回答