gpt4 book ai didi

ruby-on-rails - 使用 Devise : How to allow someone to log in using their Facebook account? 的 Rails 3

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

我有一个使用 Devise 的 Rails 3 应用程序用于身份验证。现在我需要允许某人使用他们的 Facebook 帐户登录。我认为这称为 Facebook Connect,但我也听说过 Facebook Graph API 一词,所以我不确定我要的是哪个。

要将 Facebook Connect 与 Devise 集成,我需要做什么?

解决方案:

这个问题现在已经很老了。一年前,Devise v1.2 推出了 OmniAuth支持。现在 Devise 是 v2.1(截至撰写本文时)并且使用 OmniAuth 更加容易。这是 Devise wiki 上关于 using the omniauth-facebook gem with Devise to allow sign-in using Facebook 的精彩教程.

也可以在 registering your application and working with the Facebook Graph API 上查看这个很棒的教程.

最佳答案

我检查了设计 github 页面,看看他们在做什么。该项目进展非常快,碰巧他们支持 facebook connect 等。查看关于 OAuth2 的部分。他们以 github 为例,但对于 facebook 来说是一样的,他们提到了差异。我认为这是要走的路,第三方 gems for devise 的移动速度不如 devise 或 rails 快。干杯。

糟糕,这是链接 http://github.com/plataformatec/devise

编辑

当然,我在这里几乎没有编写代码,大部分都是使用默认设置,所以这里是:

创建一个新应用并将这些 gem 添加到 gemfile。

gem 'devise', :git => 'git://github.com/plataformatec/devise.git'
gem 'oauth2', :git => 'git://github.com/intridea/oauth2.git'

运行 bundle install,然后这些命令让您使用基本的用户身份验证模型。

rails generate devise:install
rails generate devise User

在 config/initializers/devise.rb 中取消注释/修改这些。查看最后一段,了解您从 Facebook 获取 app_key 和 secret 的位置。

config.oauth :facebook, 'app_key', 'secret',
:site => 'https://graph.facebook.com',
:authorize_path => '/oauth/authorize',
:access_token_path => '/oauth/access_token'

这应该是您的用户模型。

class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable, :lockable, :timeoutable and :oauthable
devise :database_authenticatable, :oauthable

# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me

def self.find_for_facebook_oauth(access_token, signed_in_resource=nil)
# Get the user email info from Facebook for sign up
# You'll have to figure this part out from the json you get back
data = ActiveSupport::JSON.decode(access_token)

if user = User.find_by_email(data["email"])
user
else
# Create an user with a stub password.
User.create!(:name => data["name"], :email => data["email"], :password => Devise.friendly_token)
end
end
end

Devise 使用 root :to => "something#here"所以我创建了一个带有索引操作的家庭 Controller ,并用它来为应用程序建立根目录。但没关系。我把它放在 layout/application.html.erb 中,这样我就有了基本的 sign_n sign_out 路由。

<span>
<%- if user_signed_in? %>
<%= "Signed in as #{current_user.full_name}. Not you?" %>
<%= link_to 'Sign out', destroy_user_session_path %>
<%- else %>
<%= link_to 'Sign in', new_user_session_path %>
<%- end %>
</span>

Devise 几乎为我们处理了所有其他事情。不过,您需要做的是从 facebook 获取您的 app_key 和 secret(在 devise.rb 配置文件中使用)。这个链接应该让你去。 http://developers.facebook.com/setup

关于ruby-on-rails - 使用 Devise : How to allow someone to log in using their Facebook account? 的 Rails 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3580557/

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