2016 年 2 月 19 日更新 - 见下文
我正在构建一个用于邻近营销的混合移动应用程序(即一个将与信标交互的移动应用程序),并且我想使用 Bluemix Presence Insights Service 来收集数据。问题是我无法通过 SDK 连接,因为它是一个混合应用程序,因此我需要使用连接器 API。我做了一些尝试,但仍然得到 401 响应。
我尝试了设置基本身份验证标头的 Ajax 调用:
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 策略不允许这样做。这适用于连接器和管理。
我写这个以备将来参考。