这确实使我困惑了几个小时。我已经引导我的应用程序,如Baugues所详述的到了通过OAuth2进行身份验证的程度,我只是在session#create (回调)操作中测试。下面是一些代码:
class SessionsController < ApplicationController
def create
@auth = request.env["omniauth.auth"]
@token = @auth["credentials"]["token"]
client = Google::APIClient.new
client.authorization.access_token = @token
service = client.discovered_api('drive', 'v1')
file_content = Google::APIClient::UploadIO.new("foo", "text/plain")
# @result = client.execute(
# :api_method => service.files.get,
# :parameters => { 'id' => 1 },
# :headers => {'Content-Type' => 'application/json'})
end
end验证后,上面的逻辑将在callback方法中执行--为了这个粗略的测试目的,该方法会呈现出create.html.erb。我已经注释掉了刚刚回显到视图中的@result实例变量。
然而,当Google::APIClient::UploadIO.new("foo", "text/plain")显然不应该触发uninitialized constant Google::APIClient::UploadIO时,它会触发它。我已经深入研究了这个gem的来源,UploadIO类是gem的media.rb中的required。
感谢您的建议和帮助!
参考:
发布于 2012-05-30 01:29:01
检查您的Gemfile.lock,看看它实际使用的google的哪个版本。当我完成同样的步骤时,它似乎默认为0.3.0,这很可能是因为谷歌的无所不在的插件有点落后于它的依赖性。0.3.0中没有媒体支持。
尝试将Gemfile更改为
gem 'google-api-client', '~> 0.4.3', :require => 'google/api_client'并重新运行“包安装”,以迫使它使用更新的版本。
发布于 2016-03-10 22:10:29
对于偶然发现其google-api-client gem版本大于或等于0.9的人,您可能希望使用以下内容:
gem 'google-api-client', :require => 'google/apis/analytics_v3'与您正在使用的生成的google交换"analytics_v3“。
有关生成API名称的完整列表,请参见:https://github.com/google/google-api-ruby-client/tree/master/generated/google/apis
发布于 2017-02-18 16:18:52
在这里,您可以看到如何从0.8.*迁移到0.9.*
在0.8.x中,库会动态地“发现”API,从而引入额外的网络调用和不稳定性。这一数字已在0.9中得到修正。
要在0.8.x中获取驱动器客户端,需要这样做:
require 'google/api_client'
client = Google::APIClient.new
drive = client.discovered_api('drive', 'v2')在0.9中,同样的事情可以这样完成:
require 'google/apis/drive_v2'
drive = Google::Apis::DriveV2::DriveService.new所有API都可以立即访问,而不需要额外的网络调用或运行时代码生成。
API方法
API方法的调用样式已经更改。在0.8.x中,所有调用都是通过泛型execute方法进行的。在0.9中,生成的服务完全定义了所有可用方法的方法签名。
要使用0.8.x中的获得一个文件,需要这样做:
file = client.execute(:api_method => drive.file.get, :parameters => { 'id' => 'abc123' })在0.9中,同样的事情可以这样完成:
file = drive.get_file('abc123')可以在生成的目录中找到完整的API定义,包括可用的方法、参数和数据类。
https://stackoverflow.com/questions/10736348
复制相似问题