加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读