gpt4 book ai didi

ruby-on-rails - 如何创建自定义 omniauth 提供程序(如何返回数据)

转载 作者:数据小太阳 更新时间:2023-10-29 08:12:33 25 4
gpt4 key购买 nike

我在网上搜索了如何为 omniauth 创建自定义提供程序..我部分成功了..

我创建了一个 gem,它工作得很好,除了我无法理解如何将收集的数据返回给 session Controller 的部分,就像其他提供者所做的那样..

这是 auth gem 中的代码:

require 'multi_json'
require 'digest/md5'
require 'rest-client'

module OmniAuth
module Strategies
class Providername < OmniAuth::Strategies::OAuth
attr_accessor :app_id, :api_key, :auth

def initialize(app, app_id = nil, api_key = nil, options = {})
super(app, :providername)
@app_id = app_id
@api_key = api_key
end

protected

def request_phase
redirect "http://valid_url"
end

def callback_phase
if request.params['code'] && request.params['status'] == 'ok'
response = RestClient.get("http://valid_url2/?code=#{request.params['auth_code']}")
auth = MultiJson.decode(response.to_s)
unless auth['error']
@auth_data = auth

if @auth_data
@return_data = OmniAuth::Utils.deep_merge(super, {
'uid' => @auth_data['uid'],
'nickname' => @auth_data['nick'],
'user_info' => {
'first_name' => @auth_data['name'],
'last_name' => @auth_data['surname'],
'location' => @auth_data['place'],
},
'credentials' => {
'apikey' => @auth_data['apikey']
},
'extra' => {'user_hash' => @auth_data}
})
end

end
else
fail!(:invalid_request)
end
rescue Exception => e
fail!(:invalid_response, e)
end

end
end
end

在这里我在初始化器中调用它:

Rails.application.config.middleware.use OmniAuth::Builder do
provider "providername", Settings.providers.providername.app_id, Settings.providers.providername.app_secret
end

在这段代码中,到目前为止一切正常,提供者被调用,我从提供者那里得到信息,我用信息创建一个散列(@auth_data),但我如何返回它

最佳答案

看起来您必须定义一个名为 auth_hash 的新方法,以便您可以从 omniauth 实例调用它。

https://gist.github.com/dira/722793

您是否查看了 omniauth 构建策略指南?

https://github.com/intridea/omniauth/wiki/Strategy-Contribution-Guide

其他指南将您指向 auth_hash 方法的想法:

http://anti-pattern.com/adding-a-new-strategy-to-omniauth

关于ruby-on-rails - 如何创建自定义 omniauth 提供程序(如何返回数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19678907/

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