我无法从概念上理解OAuth2。我已经阅读了整整一次握手过程一百次。我可以使用谷歌帐户登录我的应用程序,但一旦完成,我需要访问谷歌的API(从我登录的同一帐户的Google电子表格中读取数据,以及我在以下范围内包含电子表格的人员:战略自述)。
目前,我正在使用Omniauth和omniauth-google-oauth2策略;这很有效;它启动了Google的身份验证/登录屏幕,当我回到我的回调链接时,我正在存储[omniauth] [凭据] [令牌]。
然后使用该令牌与Google文档进行API协作的最佳方式是什么?
这是正确的方法吗?
答案 0 :(得分:1)
我认为Oauth2是一种获取用户密码以确认其在我的网站上存在的方式"。
因此,不是你的用户模型有密码列,实质上,它使用谷歌说'#34;这家伙很酷"。
现在,这与API调用有什么关系,你想知道......我也是。
如果我记得,有一个刷新令牌持续时间超过20毫秒的验证,并允许您访问他们的Google文档,如果Google的api允许您这样做这一点。
说了这么多,如果谷歌需要他们的令牌,加上你的API令牌来访问他们的电子表格,我就会把它粘在会话中。
但如果他们的API说要在范围内粘贴电子表格,那么它必须说一下如何一起使用它,不是吗?
Google Spreadsheets Oauth 2.0身份验证部分在这里,有一个流程。注意关于刷新令牌的部分。我会调查一下。
它表示将它存储在某个地方,我选择会话,或者如果你在某个地方完全偏执了db列,但不确定这是否正确。只是在这里吐痰。
在概念上甚至可以证明people helping out the Oauth 2.0 don't agree/get it。
答案 1 :(得分:1)
您可以找到包含Google API的gem,以简化您的任务。
答案 2 :(得分:0)
@Galen提到的google-drive-ruby宝石似乎与google-oauth-2提供商很好地合作:
猜测你已经将令牌存储在回调处理程序的会话中,例如
auth = request.env["omniauth.auth"]
session[:token] = auth["credentials"]["token"]
然后您可以使用它来构建会话并访问工作表:
require 'googleauth'
session = GoogleDrive::Session.from_access_token(token)
worksheet = session.spreadsheet_by_key(spreadsheet_id).worksheet_by_title(worksheet_name)
...etc
希望这有帮助。