tdkr
tdkr

Reputation: 309

Can't get Google Analytics user data to show in Rails app

I'm attempting a server-to-server connection between my Google Analytics account and my Rails app. For this, I'm using the Legato, omniauth-google-oauth2, and google-api-client gems. My intention is to have a rake task that sieves out pageview data from a particular site. However, I can't seem to get any user data out of it. Here's the code:

require 'google/api_client'
def service_account_user(scope="https://www.googleapis.com/auth/analytics.readonly")
   client = Google::APIClient.new(
     :application_name => "Listmaker",
     :application_version => "2.0"
   )
   key = OpenSSL::PKey::RSA.new(Figaro.env.google_private_key, "notasecret")
   service_account = Google::APIClient::JWTAsserter.new(Figaro.env.google_app_email_address, scope, key)
   client.authorization = service_account.authorize
   oauth_client = OAuth2::Client.new("", "", {
      :authorize_url => 'https://accounts.google.com/o/oauth2/auth',
      :token_url => 'https://accounts.google.com/o/oauth2/token'
   })
   token = OAuth2::AccessToken.new(oauth_client, client.authorization.access_token)
   Legato::User.new(token)
end

class Pageviews
    extend Legato::Model

    metrics :pageviews
    dimensions :page_path
    filter :for_page_path, &lambda {|page_path| matches(:page_path, page_path)}
end

puts profile = service_account_user.profiles.first

I appear to be getting an empty array for the profile variable after running the task. I've definitely added the developer email address to the Google Analytics View I'm interested in. Not sure what's wrong.

Upvotes: 1

Views: 306

Answers (1)

Linda Lawton - DaImTo
Linda Lawton - DaImTo

Reputation: 116968

For a service account to work with Google Analytics the Service account email must be added at the Account level. It wont work if it was only added at the view level.

Upvotes: 1

Related Questions