0

私はGarb(0.9.8)を使用して、OAuth1 を使用してサーバーから直接 Google アナリティクスからデータをフェッチします。Google は現在 OAuth2 のみをサポートしているため、 Signet gemに切り替え、サービス アカウントを使用してサーバーから直接 access_token を取得しました。これは、サーバー間のやり取りのみが必要なためです。

key = Google::APIClient::KeyUtils.load_from_pkcs12(p12_key_path, 'notasecret')
client = Google::APIClient.new(application_name: 'Service account demo', application_version: '0.0.1')
client.authorization = Signet::OAuth2::Client.new(
  :token_credential_uri => 'https://accounts.google.com/o/oauth2/token',
  :audience => 'https://accounts.google.com/o/oauth2/token',
  :scope => ['https://www.googleapis.com/auth/analytics', 'https://www.googleapis.com/auth/analytics.readonly'],
  :issuer => <service account email>,
  :signing_key => key
)

access_token = client.authorization.fetch_access_token!["access_token"]

トークンは有効で、Google API プレイグラウンドから再確認しました。サービス アカウントは、Google アナリティクス アカウントへのすべての権限を持つユーザーとして追加されました。可能であれば、多くの既存のコードを書き直さないように、完全に google-api-client gem に切り替える代わりに Garb を使用したいと考えました。次に、取得した access_token を Garb に使用させ、すべてのプロファイルを取得するために、次のようにしました。

garbsession = Garb::Session.new
garbsession.access_token = access_token
Garb::Management::Profile.all(garbsession)

しかし、私はエラーが発生しています:

NoMethodError: undefined method `get' for #<String:0xd877aa0>
    from /home/alok/.rvm/gems/ruby-1.9.3-p385/gems/garb-0.9.8/lib/garb/request/data.rb:94:in `oauth_user_request'
    from /home/alok/.rvm/gems/ruby-1.9.3-p385/gems/garb-0.9.8/lib/garb/request/data.rb:41:in `send_request'
    from /home/alok/.rvm/gems/ruby-1.9.3-p385/gems/garb-0.9.8/lib/garb/management/feed.rb:21:in `response'
    from /home/alok/.rvm/gems/ruby-1.9.3-p385/gems/garb-0.9.8/lib/garb/management/feed.rb:13:in `parsed_response'
    from /home/alok/.rvm/gems/ruby-1.9.3-p385/gems/garb-0.9.8/lib/garb/management/feed.rb:17:in `entries'
    from /home/alok/.rvm/gems/ruby-1.9.3-p385/gems/garb-0.9.8/lib/garb/management/profile.rb:14:in `all'
    from (irb):47
    from /home/alok/.rvm/gems/ruby-1.9.3-p385/gems/railties-3.2.19/lib/rails/commands/console.rb:47:in `start'
    from /home/alok/.rvm/gems/ruby-1.9.3-p385/gems/railties-3.2.19/lib/rails/commands/console.rb:8:in `start'
    from /home/alok/.rvm/gems/ruby-1.9.3-p385/gems/railties-3.2.19/lib/rails/commands.rb:41:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

私は何か間違ったことをしていますか?Garb で別の方法で取得したアクセス トークンを使用して、Google アナリティクス API にアクセスすることはできますか?

4

1 に答える 1