我已经设置了一些活动,用户可以通过Outlook / Thunderbird / Iphone等订阅日历活动。
我使用devise进行身份验证,几乎所有控制器都设置了这个设计方法:
before_filter :authenticate_user!
Icalendar Feed的网址是:
/events/export_events.ics
当我删除 before_filter:authenticate_user!行时,基本上您不需要进行身份验证,然后就可以订阅事件。
我在Phone / 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 :(得分:0)
我设法验证了。 我打开了devise.rb文件。 我必须取消注释这一行:
config.http_authenticatable = true