停止从谷歌的 API 获取刷新令牌



所以我有一个web应用程序与ruby on rails连接到谷歌驱动器的API。到目前为止,它用来接收刷新令牌,因为我使用的一个参数是脱机的。但最近它停止了。发送的url是这样的:

Redirected to https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=ID&options=%7B:access_type=%3E%22offline%22,%20:approval_prompt=%3E%22force%22%7D&redirect_uri=http://localhost:3000/oauth2callbackdrive&response_type=code&scope=https://www.googleapis.com/auth/drive%20https://www.googleapis.com/auth/userinfo.email

重定向到URI的代码如下:

client = Google::APIClient.new
client.authorization.client_id = GOOGLE_CLIENT_ID
client.authorization.client_secret = GOOGLE_CLIENT_SECRET
client.authorization.scope = SCOPES
client.authorization.redirect_uri = GOOGLE_CLIENT_REDIRECT_URI
auth_url = client.authorization.authorization_uri(:options => {:access_type => :offline, :approval_prompt => :force}.to_s)
redirect_to auth_url.to_s

在回调函数上我有这个:

client = Google::APIClient.new
client.authorization.client_id = GOOGLE_CLIENT_ID
client.authorization.client_secret = GOOGLE_CLIENT_SECRET
client.authorization.scope = SCOPES
client.authorization.redirect_uri = GOOGLE_CLIENT_REDIRECT_URI
client.authorization.code = params['code']          
client.authorization.fetch_access_token!

在同一个函数中,我插入到数据库中:

CloudAccount.create(username: username,access_token:client.authorization.access_token, refresh_token:client.authorization.refresh_token,register_id:userID,cloud_name:'drive')

问题是,client.authorization。refresh_token之前有一个值,现在返回空,因此它被作为NULL插入到DB中。当access_token过期时,它会影响上传/刷新/下载。

我能做什么或者我做错了什么?

谢谢。

我有一个类似的问题(从google api获得刷新令牌)。我认为如果你用:prompt='select_account consent'

然后强制一个新的审批屏幕,你得到一个新的refresh_token。

参考:https://developers.google.com/identity/protocols/OAuth2UserAgent

相关内容

  • 没有找到相关文章

最新更新