これは確かに私を数時間困惑させました. 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
この宝石のソースを掘り下げたところ、UploadIO
クラスは宝石のrequired
中media.rb
にあります。
アドバイスと支援に感謝します!