【问题标题】:Adding a Birthday to a Contact to Google Contacts将生日添加到 Google 通讯录
【发布时间】:2014-07-14 23:03:45
【问题描述】:

我对如何在 .NET 中的 Google Contacts API 中为联系人条目添加生日感到有些困惑。

现在,我正在创建一个新的联系人条目:

Dim contact As New Contact
contact.Name = New Name()
...
contact.ContactEntry.Birthday = pushedBirthday
...
service.Insert(feedUri, contact) 'Insert using the Contacts API

现在每次执行此操作时,我都会从 Google 收到 HTTP 400(错误请求)。我不确定这里发生了什么...联系人 API 文档中显示的示例并没有真正详细介绍如何创建生日,因此我有点迷茫。

有什么想法吗?

【问题讨论】:

    标签: vb.net gdata gdata-api google-contacts-api


    【解决方案1】:

    哇哦!我想通了。显然,是我的生日日期的格式引发了错误,因为它在 Google 端是无效的架构。

    我是这样发现的:

    在我的代码中,我基本上提取了 Atom XML 条目以将联系人对象视为 XML,如下所示:

                Dim st As New System.IO.MemoryStream()
    
                newContact.AtomEntry.SaveToXml(st)
    
                Dim sw As New System.IO.StreamWriter("C:\test.xml")
                sw.Write(Encoding.UTF8.GetString(st.ToArray()))
                sw.Close()
    

    这基本上将 XML 表示作为test.xml 写入磁盘。现在,我查看了 XML,生日就在那里。所以我去了谷歌的 OAuth2 操场:https://developers.google.com/oauthplayground/ 并使用相同的 POST CreateContact 操作传入 XML 消息。

    事实证明,日期验证需要xs:date 的数据类型。我的日期格式是MM/dd/yyyy,但失败了。相反,我将其更改为 yyyy-MM-dd 并且一切正常!

    我不知道 OAuth2 游乐场,但它对于在发生错误时获取更详细的异常非常有用。 :)

    【讨论】:

      猜你喜欢
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-30
      • 2021-10-23
      相关资源
      最近更新 更多