Как получить данные вложения с помощью openproject API

В настоящее время я пытаюсь показать данные о рабочем пакете openproject на своем веб-сайте, используя openproject api v3 (я использую PHP с symfony.).

У меня нет проблем с получением общих данных (тема, описание, приоритет и т. Д.), Но я не уверен, что знаю, как показать вложения пользователю.

Я пытался с помощью "/api/v3/work_packages/".$id."/attachments", но в json нет изображения:

"_type":"Collection",
"total":1,
"count":1,
"_embedded":{
    "elements":[{
        "_type":"Attachment",
        "id":1888,"fileName":"128-128-logo.png",
        "fileSize":9583,
        "description":{"format":"plain","raw":null,"html":""},
        "contentType":"image/png",
        "digest":{"algorithm":"md5","hash":"/*-hash-here-*/"},
        "createdAt":"2018-07-09T16:49:26Z",
        "_links":{
             "self":{"href":"/api/v3/attachments/1888","title":"128-128-logo.png"},
             "author":{"href":"/api/v3/users/7","title":"User Name"},
             "container":{"href":"/api/v3/work_packages/1697","title":"Subject -\u003E Test Query OpenProject"},
             "downloadLocation":{"href":"/attachments/1888/128-128-logo.png"},
             "delete":{"href":"/api/v3/attachments/1888","method":"delete"}
        }
    }]
},
"_links":{
    "self":{"href":"/api/v3/work_packages/1697/attachments"}
}

Я тоже пробовал с прямой ссылкой на вложение, но получил

"_type":"Attachment",
"id":1888,
"fileName":"128-128-logo.png",
"fileSize":9583,
"description":{"format":"plain","raw":null,"html":""},
"contentType":"image/png",
"digest":{"algorithm":"md5","hash":"/*-hash-here-*/"},
"createdAt":"2018-07-09T16:49:26Z",
"_links":{
    "self":{"href":"/api/v3/attachments/1888","title":"128-128-logo.png"},
    "author":{"href":"/api/v3/users/7","title":"User Name"},
    "container":{"href":"/api/v3/work_packages/1697","title":"Subject -\u003E Test Query OpenProject"},
    "downloadLocation":{"href":"/attachments/1888/128-128-logo.png"},
    "delete":{"href":"/api/v3/attachments/1888","method":"delete"}
}

Местоположение загрузки не является URL-адресом API и возвращает 406 - неавторизовано, если я пытаюсь получить к нему доступ с помощью тега img (<img src="https://XXXXXX.openproject.com/attachments/1888/128-128-logo.png">)

Поэтому я предполагаю, что мой вопрос таков: как показать моим пользователям вложения, даже если у них нет учетной записи в моем openproject?

1 ответ

Решение

Чтобы показать вложение на вашем сайте, вам необходимо:

  • Предоставьте анонимный доступ к вашему экземпляру openproject.
  • Иметь вложение в общедоступном проекте, означающее, что его необходимо будет прикрепить к рабочему пакету, вики-странице... общедоступного проекта.

Предоставьте анонимный доступ к вашему экземпляру openproject

Снимите флажок "Требуется аутентификация" в настройках системы ("Администрирование" -> "Системные настройки" -> "Аутентификация" (вкладка)") и сохраните.

Сделать проект общедоступным

Отметьте "Public" в настройках проекта (после перехода к проекту -> "Настройки проекта" -> "Информация" (вкладка)) и сохраните.

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

последствия

Каждый сможет получить доступ к вашему экземпляру OpenProject, по крайней мере, к части с открытым проектом.

Альтернатива 1

Если это частный веб-сайт, и все посетители этого веб-сайта также будут иметь учетную запись в экземпляре OpenProject, и если будет гарантировано, что они всегда будут зарегистрированы в OpenProject при посещении веб-сайта, их браузер отправит файл cookie сеанса в OpenProject. экземпляр автоматически при получении изображения, что приведет к их авторизации для получения вложения.

Альтернатива 2

После выхода OP 8.0 клиенты API смогут загружать вложения. Затем скрипт с ключом API может загрузить интересующие нас вложения и сохранить их в месте, доступном для вашего сайта. Затем посетители сайта получат вложение прямо с сайта.

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