我正在使用 Google API Ruby Client 获取对用户日历的访问权限。
我可以通过以下方式访问:
client_id: "xxxxx"
client_secret: "xxxxx"
access_type: "offline"
approval_type: ""
scope: "https://www.google.com/calendar/feeds/ https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/calendar"
callback_path: "/app/oauth_response"
provider :google_oauth2, GOOGLE_API['client_id'], GOOGLE_API['client_secret'],
{ access_type: GOOGLE_API['access_type'],
approval_prompt: GOOGLE_API['approval_prompt'],
scope: GOOGLE_API['scope'],
callback_path: GOOGLE_API['callback_path'],
path_prefix: GOOGLE_API['path_prefix']}
当响应返回时,它有一个刷新令牌、访问令牌、expired_at 等。然后我可以使用访问代码发出 API 请求。但是一旦访问代码过期(一个小时后),我相信我需要使用刷新令牌来获取新的访问令牌,对吗?
这是我正在打的电话:
HTTParty.get('https://www.google.com/calendar/feeds/default/owncalendars/full', :query => {:alt => "jsonc", :access_token => access_token})
这告诉我我的令牌已过期。所以我试着买一个新的。但是当我尝试这样做时,我得到了这个:
@client.authorization.fetch_access_token!
ArgumentError Exception: Missing authorization code.
我在我的@client 对象@code=nil 中看到了这一点。我假设这是需要设置的,但我没有从我的初始请求中返回“代码”属性。
我如何获得该代码,或者如果我不需要它,我做错了什么?谢谢!