google-api-ruby-clientをRailsで使おうとしたときにはまったこととその解決策
概要
タイトル通り。備忘録も兼ねてまとめておきます。
Google::APIClient.newでエラーが出る
NameError: uninitialized constant Google
って出てえっ?ってなったパターン(笑)
これはGemfile
で
gem 'google-api-client'
としか書いておらず、gemの読み込みに失敗しているから。
公式ドキュメントを見ればわかるように、require
するのはgoogle/api_client
(を含む3つのgem)なので
gem 'google-api-client', require: 'google/api_client'
と、明示的に指定してあげればOK。
OAuthなし(APIキーのみ)で利用したい
Google+にログインする必要のない操作、例えば、特定のユーザーの一般公開された投稿を取得したいといったものであれば、認証は必要ありません。
ただ、公式ドキュメントのコードはOAuthの使用が前提になっているので、APIキーだけで利用する方法を色々調べてみました。
結論としては、以下のようにすれば動くみたいです。
client = Google::APIClient.new( application_name: 'Example Ruby application', application_version: '1.0.0' ) client.key = "your api key" client.authorization = nil result = client.execute( api_method: client.discovered_api(:plus).activities.list, parameters: { collection: "public", userId: 101748015513264110691 } )
client.authorization = nil
としているのがポイントで、こうしないとArgumentError: Missing access token.
というエラーが出ます。
結果をHashで受け取りたい
client.execute
の戻り値に対して.data.to_hash
を実行してあげればOKです。