ruby-on-rails – 我可以将facebook id令牌传递给Rails Devise服
发布时间:2020-12-17 03:00:39 所属栏目:百科 来源:网络整理
导读:我有一个与Devise OmniAuth一起运行的Rails Web服务.我让用户在移动设备上对Facebook Connect进行身份验证.然后,我希望移动设备与我们的Web服务建立会话.从移动客户端传递到设备以建立此会话需要什么?在Rails方面是否有一些代码示例如何处理从facebook传递
我有一个与Devise OmniAuth一起运行的Rails Web服务.我让用户在移动设备上对Facebook Connect进行身份验证.然后,我希望移动设备与我们的Web服务建立会话.从移动客户端传递到设备以建立此会话需要什么?在Rails方面是否有一些代码示例如何处理从facebook传递的id令牌 – >移动 – >网络服务?
解决方法
我还没有找到一个好方法.我没有使用:omniauthable,我正在单独使用OmniAuth和Devise,如Railscast情节中所示,其中有两个表用户和身份验证.这有点hacky只适用于Facebook.
基本上,通过SSL或类似的方式将您的access_token从iPhone发送到服务器.您必须首先检查OmniAuth,如果您被授予访问权限,则可以通过以下方式手动创建与OmniAuth的会话: 尽管如此,我确实得到了一些工作: FB = OmniAuth::Strategies::Facebook.new("nothing") client = ::OAuth2::Client.new("nothing","nothing",FB.client_options) cached_token = "app_id_part|session_id_part|token_part" # or maybe you sent it from the iPhone access_token = ::OAuth2::AccessToken.new(client,cached_token) FB.instance_variable_set("@access_token",access_token) FB.auth_hash # You will either get a hash or get this error: # OAuth2::AccessDenied: Received HTTP 401 during request. 之后,您可以通过Authentications表查找找到用户所需的用户信息: @user = Authentication.where(:uid => FB.auth_hash["uid"],:provider => "facebook").first.user 现在我们创建一个会话: sign_in_and_redirect(:user,@user) # or,perhaps sign_in(@user,:bypass => true) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |