Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby OAuth2:运行时错误:刷新\u令牌不可用_Ruby_Oauth 2.0_Google Oauth_Google Api Ruby Client - Fatal编程技术网

Ruby OAuth2:运行时错误:刷新\u令牌不可用

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

我使用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://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)

对于某些语言/库,刷新令牌不是每次都返回的,它只是第一次返回。通过发送提示同意,您将强制用户重新授权(通过显示同意屏幕)您的应用程序。一旦为用户存储了刷新令牌,就不需要使用提示同意。