Google API Ruby客户端 - 带有OAuth 2.0的单个用户



目标是为Web应用程序拥有一个Google(YouTube)帐户。Web应用程序的用户将能够通过此帐户上传视频到One YouTube频道。几个小时后,即时通讯。我找到了很多示例如何用于Google用户< -> Web应用程序交互,但是我不需要如此全面的解决方案。

我正在尝试使用OAuth 2.0(推荐)和Google API Ruby客户端(https://github.com/google/google-google-api-ruby-client)

到目前为止,我已经使用Web应用程序授权Google帐户(将具有该YouTube频道),包括所有必要的范围,离线访问也是如此,并且我具有刷新访问令牌的机制。因此,我有访问令牌,刷新令牌,客户端ID和客户端秘密。

,但我不知道如何发送简单的授权请求。下面的结果使我"超过了未经身份验证的每日限制"。一段时间后,出现了问题 - 我想我缺少客户ID和客户端秘密的一部分。

因此,问题是:如何通过Google API Ruby客户端通过OAuth 2.0发送授权请求,当我们仅与一个用户一起工作并且我们都有所有必要的ID,秘密和代币?

感谢您的任何帮助或建议。

# Faraday connection
conn = Faraday.new(:url => 'https://accounts.google.com',:ssl => {:verify => false}) do |faraday|
  faraday.request  :url_encoded
  faraday.response :logger
  faraday.adapter  Faraday.default_adapter
end    
# Refresh token
result = conn.post '/o/oauth2/token', {
  'refresh_token' => "1/1lDIvifN******************dk9Akuc9ELVKM0",
  'client_id' => "61********506.apps.googleusercontent.com",
  'client_secret' => "********************g_dLfKmi",
  'grant_type' => 'refresh_token'}
@output = ActiveSupport::JSON.decode result.body
@access_token = @output['access_token']   
@token_type = @output['token_type'] 

# Google Client
client = Google::APIClient.new      
# YouTube API v3
api = client.discovered_api('youtube', 'v3')
# Retrieve list of playlists (not working)
@result = client.execute(
  :api_method => api.playlists.list,
  :parameters => {'part' => 'snippet', 'mine' => 'true'},
  :authorization => {'token_type' => @token_type, 'access_token' => @access_token}
)

好的,所以我虽然:execute请求中的授权参数将添加http header授权:token_type access_token本身,但不是,这是一个问题。

所以这有效:

@result = client.execute(
  :api_method => api.playlists.list,
  :parameters => {'part' => 'snippet', 'mine' => 'true'},
  :authorization => {:token_type => @token_type, :access_token => @access_token},
  :headers => {:authorization => @token_type + ' ' + @access_token}
)

相关内容

  • 没有找到相关文章

最新更新