Как получить данные вложения с помощью 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 может загрузить интересующие нас вложения и сохранить их в месте, доступном для вашего сайта. Затем посетители сайта получат вложение прямо с сайта.