2014-01-07 5 views
0

Я создаю мобильное приложение для Redmine. Итак, чтобы получить данные с сервера Redmine, мне нужно пройти аутентификацию пользователя, передав его пароль и имя пользователя. В документации API Redmine для аутентификации упоминаются два метода.Не удалось получить аутентификацию с помощью Redmine REST API

  • , используя ваш обычный логин/пароль через HTTP Базовая аутентификация.
  • с помощью вашего ключа API, который является удобным способом избежать ввода пароля в скрипт. Ключ API может быть присоединен к каждому запросу в одном из следующего образом:
    - передаются в качестве параметра «ключа»
    - переданный в качестве имени пользователя со случайным паролем с помощью аутентификации HTTP Basic
    - прошел в в качестве заголовка HTTP «X-Redmine-API-Key» (добавлено в Redmine 1.1.0)

Я попытался отправить запрос GET следующим образом, я могу увидеть список выпуска в ответ на запрос Получить в браузере. Но обратный вызов успеха не запускается.

var url= "http://username:[email protected]/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.

+0

Что у вас в журналах Redmine? Найдите мир журнала с вашим запросом и опубликуйте его. – gotva

+0

@gotva Теперь я получаю новую ошибку. Теперь я изменю код. – Foreever

+0

@govta Теперь я делаю кодировку в AngularJS. – Foreever

ответ

0

В отличие от стандартных сообщений JSON, JSONP ответы должны быть завернуты в вызов функции.

Вместо:

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

Вы должны получить что-то вроде следующего с сервера:

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

я столкнулся с подобным вопросом и обнаружил, что передача параметра callback или jsonp с имя обработчика решило его. Больше информации 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); 
}); 

Это может помочь вам с бедами аутентификации, но надеюсь, вы пройдете мимо этой ошибки.

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