2014-01-15 3 views
1

Я играю с Google API в javascript. Мне удалось получить список моего контакта со следующим кодом:Добавление контакта с помощью API контактов Google в javascript

$.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, сервер отвечает мне на очень раздражающую ошибку «Нет» Access-Control-Allow-Origin ».

Любая идея? Я выполняю эту документацию: https://developers.google.com/google-apps/contacts/v3/?csw=1#creating_contacts

Спасибо большое

ответ

1

Это можно сделать из браузера, хотя и не очевидный на всех.

Основываясь на this SO answer, мы узнаем, что существует метод, называемый gapi.client.request, который может быть использован для этого (вместо $.ajax jQuery).

Соответственно для редактирования мы можем сделать:

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. используйте текущий идентификатор, указанный в конце URL-адреса в элементе entry.link с типом отношения edit (или вы получите статус HTTP 409 - конфликт)

Side Примечание: Обратите внимание, что эти запросы фактически сделаны, чтобы https://content.googleapis.com/ ... Из некоторых быстрых тестов, кажется, что вы можете делать все? запрашивает только этот URL вместо google.com, а затем проблемы CORS исчезают.

+0

Каков формат '' entry ': 'для обновления контактов? Я отправляю его так: '{" entry ": {" phone ": {" cell ": req.body.mobile}}}', но его дающая ошибка в статусе ответа 415 'invalid input' – Satyadev

Смежные вопросы