【问题标题】:Unable to get authenticated using Redmine REST API无法使用 Redmine REST API 进行身份验证
【发布时间】:2014-01-07 07:00:17
【问题描述】:

我正在为 Redmine 构建一个移动应用程序。因此,要从 Redmine 服务器获取数据,我需要通过传递用户的密码和用户名来验证用户。在 Redmine API 文档中,提到了两种身份验证方法。

  • 通过 HTTP 基本身份验证使用您的常规登录名/密码。
  • 使用您的 API 密钥,这是避免输入密码的便捷方法 在脚本中。 API 密钥可以附加到每个请求中的一个 以下方式:
    - 作为“关键”参数传入
    - 通过 HTTP Basic 作为用户名和随机密码传入 身份验证
    - 作为“X-Redmine-API-Key”HTTP 标头传入(在 Redmine 中添加 1.1.0)

我尝试发送如下获取请求,我可以在浏览器中看到响应获取请求的问题列表。但是没有触发成功回调。

var url= "http://username:password@redmine.qburst.com/issues.json";
$http({
    method: 'JSONP', 
    url: url
}).
success(function(data, status) {
    console.log(data);
}).
error(function(data, status) {
    console.log("Error "+status);
});

控制台出现以下错误。

SyntaxError: missing ; before statement

{"issues":[{"id":139989,"project":{"id":215,"name":"Book Meeting Room

错误状态为0

【问题讨论】:

  • Redmine 日志中有什么?找到您的请求并发布日志。
  • @gotva 我现在遇到一个新错误。我现在修改代码。
  • @govta 我现在正在使用 AngularJS 进行编码。
  • 很难说问题出在哪里......我认为你应该(当然如果可能的话)在开发模式下启动你的Redmine(调试应用程序会容易得多)和找出引发异常的位置。如果有堆栈 - 也发布它。

标签: javascript html angularjs authentication redmine


【解决方案1】:

与标准 JSON 不同,JSONP 响应应包装在函数调用中。

代替:

{"issues":[{"id":139989,"project":{"id":215,"name":"Book Meeting Room...

您应该从服务器获得如下信息:

handler({"issues":[{"id":139989,"project":{"id":215,"name":"Book Meeting Room"}}]});

我遇到了类似的问题,发现传递带有处理程序名称的callbackjsonp 参数解决了它。更多信息 here 在 redmine 文档中。

在 jQuery 中,这将是我的要求:

$.get('someurl', {'callback': 'foo'}, function (data, status, xhr) {
  ... request logic ...
  }, 'jsonp'
);

...这将是您使用回调参数的请求:

$http({
    method: 'JSONP', 
    url: url,
    callback: 'something'
}).
success(function(data, status) {
    console.log(data);
}).
error(function(data, status) {
    console.log("Error "+status);
});

这可能无法帮助您解决身份验证问题,但有望帮助您克服此错误。

【讨论】:

    猜你喜欢
    • 2022-01-18
    • 1970-01-01
    • 2016-04-18
    • 2013-01-05
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多