gpt4 book ai didi

ruby-on-rails - 如何使用 omniauth google oauth2 取回 Rails 应用程序的 'refresh_token'?

转载 作者:行者123 更新时间:2023-12-04 06:20:12 31 4
gpt4 key购买 nike

几个月前,我创建了一个使用 oauth2 与谷歌进行身份验证的 rails 应用程序 - 特别是 omniauth-google-oauth2 gem。我已经完成了创建身份验证和存储刷新 token 的所有步骤,但最近 oauth2 停止发回“refresh_token”作为响应的一部分。最初我收到的回复包含:

credentials: {
refresh_token: XXX,
token: YYY,
expires_at: 1374840767,
expires: true
},

现在我只取回一个小时内过期的 token :
credentials: {
token: YYY,
expires_at: 1374840767,
expires: true
},

我真的不知道我在应用程序方面做了什么来改变这一点,所以我不确定谷歌是否有所改变,或者是否是我所做的。对于上下文,我的代码如下所示:

初始值设定项/omniauth.rb:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2, 'KEY', 'SECRET', {:scope => "userinfo.email,userinfo.profile,analytics.readonly,adsense.readonly"}
end

authentications_controller.rb 是我收到响应的地方:
def create
auth = request.env["omniauth.auth"]
params = request.env["omniauth.params"]
project = Project.find(params['project_id'])

Authentication.create(:project_id => project.id, :provider => auth['provider'], :uid => auth['uid'], :access_token => auth['credentials']['refresh_token'])
flash[:notice] = "Authentication successful."
redirect_to owner_view_project_path(project)
end

我的初始化程序/omniauth.rb 文件中是否可能缺少某些内容? 我尝试将以下内容添加到选项哈希中,但这似乎并没有恢复刷新 token :
:approval_prompt => "force", :access_type => "offline"

任何帮助将不胜感激!提前致谢!

最佳答案

提示:'同意'正在为您提供刷新 token 。这样的事情应该工作:

Rails.application.config.middleware.use OmniAuth::Builder do
scopes = [
# we need the profile scope in order to login
"https://www.googleapis.com/auth/userinfo.profile",
# this and other scopes could be added, but match them up with the
# features you requested in your API Console
"https://www.googleapis.com/auth/calendar"
]

provider :google_oauth2, GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, { scope: scopes.join(" "), access_type: 'offline', prompt: 'consent'}
end

关于ruby-on-rails - 如何使用 omniauth google oauth2 取回 Rails 应用程序的 'refresh_token'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17894192/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com