gpt4 book ai didi

ruby-on-rails - 使用 Omniauth 和 Rails 3 在 Facebook 登录的 Web 和触摸界面之间切换

转载 作者:数据小太阳 更新时间:2023-10-29 06:58:18 25 4
gpt4 key购买 nike

情况:

使用 Rails 3 和 OmniAuth,我有一个使用 Facebook 策略进行身份验证的应用程序。这个应用程序被构建为同样适用于网络和移动界面(ala Jquery-Mobile)。

挑战在于让 OmniAuth 为移动设备提供 Facebook 登录屏幕的移动版本,为桌面设备提供网络版本。

我已经找到了一个解决方案,我将把它作为答案。

最佳答案

实际上,由于 OmniAuth::Strategies 已经是 Rack 中间件,所以它更简单。只需覆盖 request_phase 方法并检查移动 user_agent 策略中存在的 @env 实例变量:

module OmniAuth
module Strategies
class Facebook < OAuth2

MOBILE_USER_AGENTS = 'webos|ipod|iphone|mobile'

def request_phase
options[:scope] ||= "email,offline_access"
options[:display] = mobile_request? ? 'touch' : 'page'
super
end

def mobile_request?
ua = Rack::Request.new(@env).user_agent.to_s
ua.downcase =~ Regexp.new(MOBILE_USER_AGENTS)
end

end
end
end

关于ruby-on-rails - 使用 Omniauth 和 Rails 3 在 Facebook 登录的 Web 和触摸界面之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5518101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com