尝试获取 Google Analytics 数据时出现 403 权限不足错误

abs*_*ind 1 ruby ruby-on-rails oauth google-api google-analytics-api

我正在开发 RoR 应用程序,它允许用户使用谷歌帐户登录并从他的分析帐户之一下载/上传报告数据。我使用omniauth-google-oauth2 gem 通过google 帐户进行授权,并使用google-api-client与Google Analytics 进行交互。问题是,当我尝试使用analytics.management.accounts.list方法获取帐户列表,并将google令牌作为授权参数之一传递时,GA会响应403权限不足错误。

我想,我必须让用户在授权过程中授予读取分析数据的权限。我怎样才能做到这一点?

我读过很多相关问题,但没有找到解决我的确切问题的方法。

这是代码:

require 'google/api_client'

client = Google::APIClient.new(:application_name => 'something you like', :application_version => '1')

client.authorization.access_token = 'HERE_GOES_TOKEN'

ga = client.discovered_api('analytics', 'v3')

client.execute(:api_method => ga.management.accounts.list)
Run Code Online (Sandbox Code Playgroud)

abs*_*ind 5

解决了问题!我必须在 OAuth 配置中编写正确的范围。

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :google_oauth2, PROVIDER_KEY, PROVIDER_SECRET,
  {
    :scope => "email, profile, https://www.googleapis.com/auth/analytics, https://www.googleapis.com/auth/analytics.edit, https://www.googleapis.com/auth/analytics.manage.users, https://www.googleapis.com/auth/analytics.readonly",
  }
end
Run Code Online (Sandbox Code Playgroud)