Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails OAuth2-创建Cllient以调用API_Ruby On Rails_Ruby_Oauth_Linkedin_Omniauth - Fatal编程技术网

Ruby on rails OAuth2-创建Cllient以调用API

Ruby on rails OAuth2-创建Cllient以调用API,ruby-on-rails,ruby,oauth,linkedin,omniauth,Ruby On Rails,Ruby,Oauth,Linkedin,Omniauth,我目前正在尝试调用Linkedin API或其他API。 我正在使用OAuth2和Linkedin策略gems。链接http://my_app/auth/linkedin 我已经在数据库中注册了access_token的信息 现在我试着让LinkedinApi获取一些信息。Linkedin gem中有链接此gems/omniauth-Linkedin-oauth2-0.1.5/lib/omniauth/strategies/Linkedin.rb的行: 使用由定义的访问令牌 def access

我目前正在尝试调用Linkedin API或其他API。 我正在使用OAuth2和Linkedin策略gems。链接http://my_app/auth/linkedin 我已经在数据库中注册了access_token的信息

现在我试着让LinkedinApi获取一些信息。Linkedin gem中有链接此gems/omniauth-Linkedin-oauth2-0.1.5/lib/omniauth/strategies/Linkedin.rb的行:

使用由定义的访问令牌

def access_token
  ::OAuth2::AccessToken.new(client, oauth2_access_token.token, {
    :mode => :query,
    :param_name => 'oauth2_access_token',
    :expires_in => oauth2_access_token.expires_in,
    :expires_at => oauth2_access_token.expires_at
  })
end
我的问题是:如何创建客户机对象和oauth2\u访问\u令牌

可以使用OmniAuth::Strategy::Linkedin.newnil.client创建客户机,但我不确定这是正确的方法


OAuth gems中有很多函数,我迷路了!如何创建对API的简单调用?

如果您使用的是OAuth,您总是需要一个令牌,而不仅仅是一个客户端来发出授权请求——令牌构成了您的授权。区别在于您是否需要用户的授权。如果您这样做,那么您需要让用户使用授权代码或隐式授权流获取令牌,并且在您拥有令牌之后,您可以使用它对用户授予您授权的受保护资源发出授权请求。如果没有,则可以使用客户端凭据OAuth流,仅使用应用程序的凭据获取令牌。之后,您可以使用该令牌访问您的客户机自己可以访问的受保护资源。但无论哪种方式,在发出API请求之前,都需要一个令牌

但要获得客户端凭据令牌,OmniAuth是错误的工具。Omniauth将自己描述为您正在谈论使用对受保护资源进行授权请求。这些事情并非完全无关,因为大多数Omniauth策略都使用OAuth2,因为该标准是建立在OAuth2之上的。但是OAuth是一个授权协议,而不是身份验证。OmniAuth使用它,但它并不是为了对受保护的资源发出任何请求而设计的——它只是为了验证应用程序的用户而设计的

你想要的是这个。如果您使用OmniAuth,您已经得到了这个gem——它是一个依赖项。但是它有你想要的API,而不是OmniAuth

def access_token
  ::OAuth2::AccessToken.new(client, oauth2_access_token.token, {
    :mode => :query,
    :param_name => 'oauth2_access_token',
    :expires_in => oauth2_access_token.expires_in,
    :expires_at => oauth2_access_token.expires_at
  })
end