Ruby OAuth2:运行时错误:刷新\u令牌不可用
我使用OAuth2::Client获取访问权令牌。 需要使用刷新令牌刷新它吗Ruby OAuth2:运行时错误:刷新\u令牌不可用,ruby,oauth-2.0,google-oauth,google-api-ruby-client,Ruby,Oauth 2.0,Google Oauth,Google Api Ruby Client,我使用OAuth2::Client获取访问权令牌。 需要使用刷新令牌刷新它吗 client_id = '95585XXXXXXXoogleercontent.com' secret_key = 'R10Ze490IYa' client = OAuth2::Client.new(client_id, secret_key, { authorize_url: 'https://accounts.google.com/o/oauth2/auth', token_url: 'https://ac
client_id = '95585XXXXXXXoogleercontent.com'
secret_key = 'R10Ze490IYa'
client = OAuth2::Client.new(client_id, secret_key, {
authorize_url: 'https://accounts.google.com/o/oauth2/auth',
token_url: 'https://accounts.google.com/o/oauth2/token'
})
redirect_url = client.auth_code.authorize_url({
scope: 'https://www.googleapis.com/auth/analytics.readonly',
redirect_uri: 'https://example.com',
access_type: 'offline'
})
auth_code = '4/5AF6VI0JMcmA38XXXXX' # getted from redirect_url clicking
access_token = client.auth_code.get_token(auth_code, redirect_uri: 'https://example.com')
然后我尝试刷新令牌:
access_token.refresh!
我有一个错误:
运行时错误:刷新令牌不可用需要添加-提示:“同意”:
redirect_url = client.auth_code.authorize_url({
scope: 'https://www.googleapis.com/auth/analytics.readonly',
redirect_uri: 'https://example.com',
access_type: 'offline',
prompt: 'consent'
})
然后您可以获得新的访问令牌:
new_access_token = access_token.refresh!
您还可以使用以下方法保存令牌以备将来使用:
hash = access_token.to_hash # save it
# load:
loaded_token = OAuth2::AccessToken.from_hash(client, hash)
对于某些语言/库,刷新令牌不是每次都返回的,它只是第一次返回。通过发送提示同意,您将强制用户重新授权(通过显示同意屏幕)您的应用程序。一旦为用户存储了刷新令牌,就不需要使用提示同意。