【问题标题】:Adding a contact using Google Contact API in javascript在 javascript 中使用 Google Contact API 添加联系人
【发布时间】:2014-01-15 17:32:19
【问题描述】:

我正在使用 javascript 中的 Google API。我设法使用以下代码获取了我的联系人列表:

$.ajax({
    url: 'https://www.google.com/m8/feeds/contacts/default/full?access_token=' + access_token + '&alt=json',
    method: 'GET',

    error: function(error) {
        alert('An error has occured during contact creation.');
    },

    success: function(data, status){
        console.log(data);
    }
});

我尝试通过将 GET 更改为 POST 并在请求正文中添加我的联系人数据来添加联系人。但是一旦我添加了一个数据属性,或者将 GET 更改为 POST,服务器就会回答我非常烦人的“No 'Access-Control-Allow-Origin”错误。

有什么想法吗? 我正在关注此文档:https://developers.google.com/google-apps/contacts/v3/?csw=1#creating_contacts

非常感谢

【问题讨论】:

    标签: javascript api google-contacts-api


    【解决方案1】:

    可以从浏览器中执行此操作,尽管并不明显

    基于this SO answer,我们了解到有一个名为gapi.client.request 的方法可以用于此(而不是jQuery 的$.ajax)。

    因此,编辑我们可以这样做:

    gapi.client.request({
        method : 'PUT', 
        path:'m8/feeds/contacts/default/full/<contactId>/<editRevisionFromGET>', 
        body : {"version":"1.0","encoding":"UTF-8","entry": ...}, 
        callback : function(data) { 
            console.log(data); 
        }
    });
    

    这里需要编辑的重要部分是:

    1. 发回您之前从阅读中获得的整个条目
    2. 使用关系类型为editentry.link 元素中URL 末尾给出的当前ID(否则您将获得HTTP 状态409 - 冲突)

    旁注: 请注意,这些请求实际上是针对https://content.googleapis.com/ ... 通过一些快速测试,您似乎可以做到?全部?仅向该 URL 而不是 google.com 请求,然后 CORS 问题消失。

    【讨论】:

    • "entry":更新联系人的格式是什么??我这样发送它:{"entry":{"phone":{"cell": req.body.mobile}}} 但它在响应状态 415 invalid input 中给出错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多