2014-11-21 2 views
0

Я установил некоторые события, в которых пользователи могут подписаться на события календаря через 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 

ответ

0

мне удалось пройти аутентификацию. Я открыл файл devise.rb. Где мне пришлось ранить эту строку:

config.http_authenticatable = true