rails刷新范围请求谷歌api

问题描述 投票:0回答:1

我有一个使用google-api-client和omniauth-google-oauth2宝石的rails应用程序。我想整合谷歌日历。我尝试使用下面的代码进行身份验证,但失败了。

问题是,当我更改范围时,让我们说:scope: ['email']甚至scope: ['hahahaha']我从谷歌获得了相同的响应,如下所示。玩了一段时间之后,我放弃了等待一段时间然后再次尝试,我得到了一个新的错误响应。我试图改变代码,但这次又遇到了另一个错误。是否有时间限制或为什么在更改代码后没有立即更新响应?

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :google_oauth2, ENV['GOOGLE_API_KEY'], ENV['GOOGLE_API_SECRET'], {
    scope: ['email, profile, calendar'],
    access_type: 'offline'
  }
end

谷歌的错误消息:

错误:invalid_scope

一些要求的范围无效。 {valid = https://www.googleapis.com/auth/calendar,[invalid = profile,https://www.googleapis.com/auth/email,]}

ruby-on-rails oauth-2.0 google-api omniauth google-api-client
1个回答
1
投票

根据omniauth-google-oauth2文档,scope应该是一个逗号分隔范围的字符串。但是你在代码中使用了一个数组。所以scope: "email, profile, calendar"应该工作。

至于响应随时间变化,你在你的Rails应用程序中使用Spring吗? Spring允许您通过在第一次运行期间预加载来更快地加载Rails应用程序。然后,当你再次运行rails时,它会使用这个预加载的应用程序。更改应用程序配置后,您必须重新启动应用程序才能使更改生效。如果你只是重新启动rails它将无法工作,因为Spring仍然在内存中运行一个应用程序。因此,如果你使用Spring,你必须在更改应用程序配置后重新启动它,如下所示:

spring stop
rails s
© www.soinside.com 2019 - 2024. All rights reserved.