如何指定Google API的范围以获取生日

时间:2014-05-27 18:24:46

标签: symfony google-api google-plus google-oauth hwioauthbundle

我正在尝试从Google API获取birthday,但HWIOAuthBundle中检索到的数据不包含它。

我想知道config.yml中google plus api的指定范围是否正确!

如果没有,请提供链接或更正的范围。

google:
    type:                google
    client_id:           %client_id%
    client_secret:       %secret_id%
    scope:               "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"
    paths:
        email:           email
        profilepicture:  picture

2 个答案:

答案 0 :(得分:17)

我刚使用Try It进行测试。我用所有不同的范围测试了它。

  

https://www.googleapis.com/auth/plus.login了解您的基本资料   信息和圈子中的人员列表。

     

https://www.googleapis.com/auth/plus.me了解您在Google上的身份   https://www.googleapis.com/auth/userinfo.email查看您的电子邮件地址   https://www.googleapis.com/auth/userinfo.profile查看基本内容   有关您帐户的信息

在所有范围内回到生日并不重要。但重要的是,用户生日必须在帐户中设置为public。如果它设置为其他任何内容,您的圈子,只有您,它没有列出。即使您尝试查看自己的信息,这似乎也是如此。 (发送给我。)

更新,年份是2018年

People api现在返回当前用户的生日

People.get但我怀疑它与谷歌+相关联,所以如果用户没有填写它,你可能不会得到信息。

  

获取https://people.googleapis.com/v1/ {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
      }
    }
  ]

答案 1 :(得分:0)

通常,您只会获得具有公众知名度的生日。要获得私人生日,您需要使用https://www.googleapis.com/auth/user.birthday.read范围。请参阅文档,了解哪些范围为您提​​供了哪些数据https://developers.google.com/people/v1/how-tos/authorizing#profile-scopes