🤖
Google::APIClient::FileStorageのwrite_credentialsでこける
を参考にやってみたけどうまくいかなかったのでメモ。
発生したバージョン
google-api-clientの0.8.1.1
で発生。
エラー内容
`write_credentials': undefined method `authorization=' for #<Google::APIClient::FileStorage:0x007fbecca58b78> (NoMethodError)
みたいなエラーが出て認証情報を保存できなかった。
google-api-client-0.8.1.1/lib/google/api_client/auth/file_storage.rb
を見てみるとdeprecated
でGoogle::APIClient::Storage
とGoogle::APIClient::FileStore
を使えと書いてあった
というわけで
のsetupメソッドを以下のようにしたら動いた
def setup()
client = Google::APIClient.new(application_name: 'Sample', application_version: '1.0.0')
store = Google::APIClient::FileStore.new(CREDENTIAL_STORE_FILE)
storage = Google::APIClient::Storage.new(store)
storage.authorize
if storage.authorization.nil?
client_secrets = Google::APIClient::ClientSecrets.load
flow = Google::APIClient::InstalledAppFlow.new(
client_id: client_secrets.client_id,
client_secret: client_secrets.client_secret,
scope: %w(
https://www.googleapis.com/auth/drive
https://docs.google.com/feeds/
https://docs.googleusercontent.com/
https://spreadsheets.google.com/feeds/
),
)
client.authorization = flow.authorize
storage.write_credentials(client.authorization)
else
client.authorization = storage.authorization
end
return client
end
Discussion