Omniauth-google-oauth2是否仅允许身份验证,还是还满足API需求?

时间:2012-06-16 20:24:28

标签: ruby-on-rails oauth-2.0 omniauth google-spreadsheet-api

我无法从概念上理解OAuth2。我已经阅读了整整一次握手过程一百次。我可以使用谷歌帐户登录我的应用程序,但一旦完成,我需要访问谷歌的API(从我登录的同一帐户的Google电子表格中读取数据,以及我在以下范围内包含电子表格的人员:战略自述)。

目前,我正在使用Omniauth和omniauth-google-oauth2策略;这很有效;它启动了Google的身份验证/登录屏幕,当我回到我的回调链接时,我正在存储[omniauth] [凭据] [令牌​​]。

然后使用该令牌与Google文档进行API协作的最佳方式是什么?

这是正确的方法吗?

3 个答案:

答案 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,以简化您的任务。

Here's one that works with Google Drive and spreadsheets

答案 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

希望这有帮助。

相关问题