Ruby on rails OmniAuth OAuth2如何访问策略->;客户这样我就可以刷新令牌了? 背景
我在rails应用程序上有一个omniauth-oauth2子类策略。当刷新access\u令牌时,我看到我需要创建Ruby on rails OmniAuth OAuth2如何访问策略->;客户这样我就可以刷新令牌了? 背景,ruby-on-rails,ruby,oauth-2.0,omniauth,Ruby On Rails,Ruby,Oauth 2.0,Omniauth,我在rails应用程序上有一个omniauth-oauth2子类策略。当刷新access\u令牌时,我看到我需要创建OAuth2::AccessToken。但要创建它,似乎需要OAuth2::Client,我认为这可以从“omniauth-OAuth2子类策略”中获得 找到了这个解决方案 这就是他们如何解决问题以获得策略的方法 #初始参数:nil是一个机架对象,但由于 #我们这里不用它,我们给它零分 strategy=OmniAuth::strategys::您的\u提供者。新的nil,客户端\
OAuth2::AccessToken
。但要创建它,似乎需要OAuth2::Client
,我认为这可以从“omniauth-OAuth2子类策略”中获得
找到了这个解决方案
这就是他们如何解决问题以获得策略的方法
#初始参数:nil是一个机架对象,但由于
#我们这里不用它,我们给它零分
strategy=OmniAuth::strategys::您的\u提供者。新的nil,客户端\u id,客户端\u secret
client=strategy.client
您的\u已在\u过期\u from\u您的\u提供者=Time.now.to\u i
散列={
access_token:“您的提供商提供的access_token”,
刷新令牌:“来自提供商的刷新令牌”,
expires\u at:您的\u已从\u供应商处过期\u,
}
access\u token\u object=OAuth2::AccessToken.from\u散列(客户端,散列)
访问\u令牌\u对象。刷新!
问题
我不明白的是,通过给第一个参数nil
来创建策略似乎有点老套
“omniauth-oauth2子类策略”在机架中(如下图所示),因此我认为有一种方法可以从机架中间件的某个地方访问策略
问题
创建上述策略是刷新令牌的唯一方法吗?策略->客户端->访问\u令牌\u对象->刷新代码>我找不到正确的方法,但为我的自定义omniauth策略制定了一个变通方法:
class MyOrg < OmniAuth::Strategies::OAuth2
#...
info do
{
'email' => extra['user'].try(:[], 'email'),
# ...
'get_org' => Proc.new do
get_org
end
}
end
def get_org
@org ||= begin
org_id = extra['user'].try(:[], 'org_id')
access_token.get(options[:client_options][:site] + "/v1/orgs/#{org_id}").parsed
end
end
end
我利用oauth2
gem来进行刷新。以下是使用omniauth策略访问google API的完整解决方案:
hash[:info][:get_org].call