我正在开发RoR应用程序,它允许用户使用google帐户登录并从他的一个分析帐户下载/上传报告数据。我使用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)
问题解决了!我必须在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