Как я могу отправить данные в API коннекторов Presence Insights через Swagger или Ajax?

ОБНОВЛЕНИЕ 19 февраля 2016 - см. Ниже

Я создаю гибридное мобильное приложение для бесконтактного маркетинга (т.е. мобильное приложение, которое будет взаимодействовать с маяками), и я хотел бы использовать службу Bluemix Presence Insights для сбора данных. Проблема в том, что я не могу подключиться через SDK, так как это гибридное приложение, поэтому мне нужно использовать API коннекторов. Я сделал несколько попыток, и я все еще получаю ответ 401.

Я пробовал вызов Ajax, устанавливающий заголовки Basic Autentication:

beforeSend: function (xhr) {
    xhr.setRequestHeader ("Authorization", "Basic " + btoa(username + ":" + password));
},

или же

beforeSend: function (xhr) {
    xhr.setRequestHeader ("Authorization", "Basic <my encrypted token>");
},

или же

headers: {
    "Authorization": "Basic " + btoa(USERNAME + ":" + PASSWORD)
  },

(также с зашифрованным токеном, я не переписываю его).

Затем я создал сервер Node.js и установил swagger-client (т.е. я изменил стратегию):

router.post('/', function (req, res, next) {
    var json = req.body.json;
    var client = new Swagger({
        url: 'https://presenceinsights.ibmcloud.com/pi-swagger/the-connector-api',
        success: function () {
            console.log("success");
            console.log(JSON.stringify(client));
        },
        authorizations : {
            easyapi_basic: new Swagger.PasswordAuthorization('username', 'password')
        }

    });

    res.end();
});

На этот раз я добился прогресса:

Я могу успешно подключиться, но я не могу отправить JSON с данными. Не имея доступа к swagger.json как мне объявить тело почтового запроса? Есть ли способ получить доступ к swagger.json о присутствии (эта вещь решит все мои проблемы)?

ОБНОВЛЕНИЕ После обмена информацией со службой поддержки Presence Insights я могу сказать, что звонить клиенту Swagger нецелесообразно. Единственный способ использовать службу с гибридным приложением - это создать прокси-среду исполнения Blumix, которая будет пересылать данные из гибридного приложения в службу Presence Insights. Любая другая попытка, либо с внешнего сервера, либо с помощью вызова API в приложении, не разрешена, так как политика CORS не допускает этого. Это верно для разъемов и управления.

Я пишу это для дальнейшего использования.

1 ответ

Решение

URL конечной точки, который вы вводите, должен быть местоположением определения чванства или спецификации чванства. После загрузки вы можете совершать звонки в API. Обратите внимание: инициализируемый клиент swagger будет динамически создавать функции на основе этого определения.

Теперь, немного покопавшись, я увидел, что определение чванства действительно доступно для этой службы:

https://presenceinsights.ibmcloud.com/pi-swagger/swagger.json

Как только вы поместите это в клиент, вы сможете технически совершать звонки на сервер.

Однако есть проблема с этим сервисом. Определение чванства не выглядит допустимым, и из-за этого не будет возможности использовать клиент javascript. Например:

https://online.swagger.io/validator/debug?url=https://presenceinsights.ibmcloud.com/pi-swagger/swagger.json

Показывает много ошибок. Возможно, я неправильно использую swagger.json из этого сервиса (я его выяснил), но то, на что я указал - используя определение при создании клиента, - это то, как работает эта библиотека.

Другие вопросы по тегам