gpt4 book ai didi

ruby-on-rails - 我可以将 facebook id + token 传递给 Rails Devise 服务以验证用户身份吗?

转载 作者:行者123 更新时间:2023-11-30 05:27:26 27 4
gpt4 key购买 nike

我有一个使用 Devise + OmniAuth 运行的 Rails 网络服务。我有用户在移动设备上对 Facebook Connect 进行身份验证。然后我希望移动设备与我们的 Web 服务建立 session 。我需要从移动客户端传递给设备什么来建立这个 session ? Rails 方面是否有关于如何处理从 facebook -> 移动 -> Web 服务传递的这个 id+token 的代码示例?

最佳答案

我还没有找到这样做的好方法。我也没有使用 :omniauthable,我正在分别使用 OmniAuth 和 Devise,如 Railscast 情节中所示,其中有两个表 usersauthentications。它有点老套,只适用于 Facebook。

基本上,通过 SSL 或类似方式将您的 access_token 从 iPhone 发送到服务器。您必须先使用 OmniAuth 检查,如果您被授予访问权限,那么您可以通过以下方式手动创建与 OmniAuth 的 session :

不过,我确实通过这样做得到了一些东西:

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.

之后,您需要通过身份验证表查找用户信息:

@user = Authentication.where(:uid => FB.auth_hash["uid"], :provider => "facebook").first.user

现在我们创建一个 session :

sign_in_and_redirect(:user, @user)

# or, perhaps

sign_in(@user, :bypass => true)

关于ruby-on-rails - 我可以将 facebook id + token 传递给 Rails Devise 服务以验证用户身份吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6433491/

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