Ruby on rails Rails获取oauth令牌和额外字段
我正在尝试获取oauth令牌,但无法获取。我正在使用omniauth使用facebook登录。我可以登录,但我想获取用户的个人资料数据等功能。因此,我想获取令牌。这是我的代码Ruby on rails Rails获取oauth令牌和额外字段,ruby-on-rails,omniauth,Ruby On Rails,Omniauth,我正在尝试获取oauth令牌,但无法获取。我正在使用omniauth使用facebook登录。我可以登录,但我想获取用户的个人资料数据等功能。因此,我想获取令牌。这是我的代码 [omniauth.rb] OmniAuth.config.logger = Rails.logger Rails.application.config.middleware.use OmniAuth::Builder do provider :facebook, 'my-app-key', 'my-app-id',
[omniauth.rb]
OmniAuth.config.logger = Rails.logger
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, 'my-app-key', 'my-app-id', {:client_options => {:ssl => {:ca_file => Rails.root.join("cacert.pem").to_s}}}
end
[user.rb]
class User < ActiveRecord::Base
def self.from_omniauth(auth)
where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
user.provider = auth.provider
user.uid = auth.uid
user.name = auth.info.name
user
user.save
end
end
end
class用户
[应用程序\控制器]
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
helper_method :current_user
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
end
class ApplicationController
[会话控制器]
class SessionsController < ApplicationController
def create
user = User.from_omniauth(env["omniauth.auth"])
session[:user_id] = user.id
redirect_to root_path
end
def destroy
session[:user_id] = nil
redirect_to root_path
end
end
class sessioncontroller
您应该在初始值设定项中添加所需的参数。有关更多详细信息,请参见文档中的
config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook,ENV["FACEBOOK_APP_ID"], ENV["FACEBOOK_SECRET_ID"],
{:scope => 'email, public_profile, user_friends',
:secure_image_url => true}
end
您应该在初始值设定项中添加所需的参数。有关更多详细信息,请参见文档中的
config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook,ENV["FACEBOOK_APP_ID"], ENV["FACEBOOK_SECRET_ID"],
{:scope => 'email, public_profile, user_friends',
:secure_image_url => true}
end
我是否需要删除以下行提供程序:facebook、“我的应用程序密钥”、“我的应用程序id”、{:client\u options=>{:ssl=>{:ca\u file=>Rails.root.join(“cacert.pem”)。不,可以用上述代码替换。但是,您确实需要使用
app\u id
和secret\u id
替换环境变量,您可以保存任何您喜欢的内容。您可以通过在user.provider=auth.provider
的正上方放置一个调试器来查看响应。我是否需要删除以下行提供程序:facebook、'my app key'、'my app id'、{:client_options=>{:ssl=>{:ca_file=>Rails.root.join(“cacert.pem”)。对于}否,您可以用上述代码替换。但是,您确实需要使用app\u id
和secret\u id
替换环境变量,您可以保存任何您喜欢的内容。您可以通过将调试器放在user.provider=auth.provider