【问题标题】:Omniauth-google-oauth2 not correctly passing "scope" for oauthOmniauth-google-oauth2 未正确传递 oauth 的“范围”
【发布时间】:2013-03-18 16:02:23
【问题描述】:

首先,背景:我正在编写一个小网络应用程序来为我做一些自定义的 Google Analytics 报告。

在我的 Gemfile 中:

gem 'omniauth'
gem 'omniauth-google-oauth2'

在我的config/initializers/omniauth.rb:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :google_oauth2, ENV["GOOGLE_KEY"], ENV["GOOGLE_SECRET"]
    {
      :scope => "userinfo.email,userinfo.profile,analytics.readonly",
      :approval_prompt => "auto"
    }
end

当我进入 google 上的身份验证屏幕时,它只要求我提供 userinfo.email 和 userinfo.profile 权限,而 analytics.readonly 没有任何权限。

在我进行身份验证时查看 URL,我可以看到它只请求前两个权限。如果我手动添加分析权限,它会授予正确的权限。所以,我把问题缩小到了

  1. 我如何将范围传递给 omniauth-google-oauth2 策略,或者
  2. 策略如何处理/忽略范围哈希。

另外,我已在 Google API 控制台中仔细检查了我的 OAuth 密钥的 Analytics API 是否已打开。

【问题讨论】:

    标签: ruby-on-rails oauth-2.0 omniauth google-oauth


    【解决方案1】:

    格式错误的代码,ENV["GOOGLE_SECRET"] 后面缺少逗号。下面是固定代码。

    Rails.application.config.middleware.use OmniAuth::Builder do
      provider :google_oauth2, ENV["GOOGLE_KEY"], ENV["GOOGLE_SECRET"],
        {
          :scope => "userinfo.email,userinfo.profile,analytics.readonly",
          :approval_prompt => "auto"
        }
    end
    

    【讨论】:

      猜你喜欢
      • 2021-12-11
      • 2021-12-06
      • 1970-01-01
      • 2014-09-16
      • 1970-01-01
      • 1970-01-01
      • 2012-09-12
      • 1970-01-01
      • 2014-11-22
      相关资源
      最近更新 更多