gpt4 book ai didi

ruby-on-rails - Omniauth 用于 Rails API 中的提供者身份验证

转载 作者:行者123 更新时间:2023-12-01 02:34:00 26 4
gpt4 key购买 nike

我的 omniauth 在网络上为我的 rails 应用程序完美地工作。我还为我们的 iPhone 应用程序创建了一个 API 来进行交互,我正在尝试让 omniauth 工作。

有没有办法将访问 token (从与 Facebook.app 集成的 iOS 集成接收)传递给 omniauth 以在数据库中创建提供者条目?

现在在我的网络应用程序中,我有一个带有以下代码的身份验证 Controller

  def create
omniauth = request.env["omniauth.auth"]
user = User.where("authentications.provider" => omniauth['provider'], "authentications.uid" => omniauth['uid']).first

if user
session[:user_id] = user.id
flash[:notice] = t(:signed_in)
redirect_to root_path
elsif current_user
user = User.find(current_user.id)
user.apply_omniauth(omniauth)
user.save
flash[:notice] = t(:success)
redirect_to root_path
else
session[:omniauth] = omniauth.except('extra')
flash[:notice] = "user not found, please signup, or login. Authorization will be applied to new account"
redirect_to register_path
end
end

最佳答案

在我的 API 用户 Controller 中,我创建了以下内容:

  def create
@user = User.new(params[:user])
@user.save

# Generate data for omni auth if they're a facebook user
if params[:fb_access_token]
graph = Koala::Facebook::API.new(params[:fb_access_token])
profile = graph.get_object('me')

@user['fb_id'] = profile['id']
@user['fb_token'] = params[:fb_access_token]
@user['gender'] = profile['gender']

# Generate omnihash
omnihash = Hash.new
omnihash['provider'] = 'facebook'
omnihash['uid'] = profile['id']

omnihash['info'] = Hash.new
omnihash['info']['nickname'] = profile['username']
omnihash['info']['name'] = profile['name']
omnihash['info']['email'] = profile['email']
omnihash['info']['first_name'] = profile['first_name']
omnihash['info']['last_name'] = profile['last_name']
omnihash['info']['verified'] = profile['verified']

omnihash['info']['urls'] = Hash.new
omnihash['info']['urls']['Facebook'] = profile['link']

omnihash['credentials'] = Hash.new
omnihash['credentials']['token'] = params[:fb_access_token]

omnihash['extra'] = Hash.new
omnihash['extra']['raw_info'] = Hash.new

puts omnihash

# Save the new data
@user.apply_omniauth(omnihash)
@user.save
end

关于ruby-on-rails - Omniauth 用于 Rails API 中的提供者身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11194893/

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