API-ключ передачи JSONP

У меня есть Arduino, загружающая данные датчика на cosm.com. Я создал простую веб-страницу на своем локальном веб-сервере, чтобы запрашивать API cosm.com и распечатывать значения.

Проблема в том, что если я не вошел в cosm.com на другой вкладке, я получаю это всплывающее окно.

введите здесь описание изображения

Решение состоит в том, чтобы передать мой открытый ключ на cosm.com, но здесь я не в себе.

В документации приведен пример того, как это сделать в curl, а не в javascript.

curl --request GET --header "X-ApiKey: -Ux_JTwgP-8pje981acMa5811-mSAKxpR3VRUHRFQ3RBUT0g" https://api.cosm.com/v2/feeds/120687/datastreams/sensor_reading


Как мне передать свой ключ в URL-адрес?:

function getJson() {
$.ajax({
    type:'GET',
    url:"https://api.cosm.com/v2/feeds/120687/datastreams/sensor_reading",

//This line isn't working
    data:"X-ApiKey: -Ux_JTwgP-8pje981acMa5811-mSAKxpR3VRUHRFQ3RBUT0g",

    success:function(feed) {

     var currentSensorValue = feed.current_value;
      $('#rawData').html( currentSensorValue );
    },
    dataType:'jsonp'
});
}


ОБНОВЛЕНИЕ: это должно быть возможно, потому что hurl.it может запрашивать API http://www.hurl.it/hurls/75502ac851ebc7e195aa26c62718f58fecc4a341/47ad3b36639001c3a663e716ccdf3840352645f1

ОБНОВЛЕНИЕ 2: Хотя я так и не заработал, я нашел обходной путь. У Cosm есть собственная библиотека javascript, которая делает то, что я ищу.

http://cosm.github.com/cosm-js/ http://jsfiddle.net/spuder/nvxQ2/5/


person spuder    schedule 31.03.2013    source источник


Ответы (2)


Должно быть намного проще заставить его работать с помощью CosmJS. Это официально поддерживаемая библиотека, которая обеспечивает полный охват Cosm API.

person errordeveloper    schedule 01.04.2013

Вам нужно отправить его как заголовок, а не как строку запроса, поэтому попробуйте следующее:

function getJson() {
  $.ajax({
    type:'GET',
    url:"https://api.cosm.com/v2/feeds/120687/datastreams/sensor_reading",
    headers:{"X-ApiKey": "-Ux_JTwgP-8pje981acMa5811-mSAKxpR3VRUHRFQ3RBUT0g"},
    success:function(feed) {
     var currentSensorValue = feed.current_value;
      $('#rawData').html( currentSensorValue );
    },
    dataType:'jsonp'
  });
}
person thejh    schedule 31.03.2013
comment
Спасибо, это выглядит очень близко. У меня все еще не совсем работает. jsfiddle.net/spuder/Bsg7E/10 - person spuder; 31.03.2013
comment
@spuder Возможно, API не отправляет заголовки, необходимые для отправки пользовательских заголовков. - person thejh; 31.03.2013
comment
Хотя это не сработало в моем случае, это объяснило принцип. Отмечаю как ответивший. - person spuder; 31.03.2013