Я установил некоторые события, в которых пользователи могут подписаться на события календаря через Outlook/Thunderbird/Iphone и так далее.authenticate_user! device for ics stream
Я использую разработать для аутентификации и почти во всех контроллерах я создал этот метод DEViSE:
before_filter :authenticate_user!
URL-адрес для подачи Анонсы является:
/events/export_events.ics
Когда я удалить before_filter : authenticate_user! линии в основном вам не нужно аутентифицироваться, и тогда можно подписаться на события.
Я получил его на телефоне/Thunderbird и Outlook.
Когда я раскомментировать эту строку я получаю ошибки на моем Iphone, который говорит:
Calendar Subscription
Unable to very account information.
Когда я ввожу свои учетные данные я получаю отвергнут. Кажется, что я должен добавить что-то, чтобы разработать, чтобы пользователи могли аутентифицироваться через Url.
Журнал Rails говорит:
Processing by EventsController#export_events as ICS
Completed 401 Unauthorized in 1ms
Любая идея, как мне удалось проверить подлинность этого?
Незначительные замечания стороны, но ради полноты. Я использую Icalendar gem для создания/преобразования событий моей базы данных в допустимый формат Icalendar.
в моем events_controller.rb:
Существует действие export_events, который работает как шарм: Он полностью подходит к аутентификации, но кто-то может использовать этот фрагмент кода либо для понимания проблемы или для собственных проектов.
def export_events
@events = Event.first(10)
@calendar = Icalendar::Calendar.new
@events.each do |e|
event = Icalendar::Event.new
event.dtstart = e.start.strftime("%Y%m%dT%H%M%S")
event.dtend = e.end.strftime("%Y%m%dT%H%M%S")
event.summary = e.title
@calendar.add_event(event)
end
@calendar.publish
#headers['Content-Type'] = "text/calendar; charset=UTF-8"
#render :text => @calendar.to_ical
@stuff = @calendar.to_ical
respond_to do |w|
w.ics { render text: @stuff }
w.html{}
end
end
routes.rb:
resources :events do
collection do
get 'export_events'
end
end