我在概念上理解OAuth2时遇到了困难。关于握手的整个过程我已经读了上百遍了。我可以使用google帐户登录我的应用程序,但完成后,我需要访问Google的API (从我登录的同一个帐户上的Google电子表格中读取数据,并根据策略自述文件将电子表格包括在:范围中)。
目前,我正在使用Omniauth和omniauth-google-oauth2策略;这非常有效;它会弹出Google的身份验证/登录屏幕,当我返回到我的回调链接时,我会存储omniauthtoken。
那么,使用该令牌与Google Docs进行API工作的最佳方式是什么?
这是正确的方法吗?
发布于 2012-06-17 07:42:35
我认为Oauth2是一种“获取用户密码以确认他们在我的网站上存在的方式”。
因此,在本质上,它使用Google来表示“这家伙很酷”,而不是你的用户模型有一个密码栏。
现在,这和API调用有什么关系,你想知道...我也是。
如果我还记得的话,有一个谷歌刷新令牌,它的身份验证时间超过20ms,如果谷歌的应用程序接口允许你这样做的话,它将允许你访问他们的谷歌文档。
话虽如此,如果google需要他们的令牌,加上你的API令牌来访问他们的电子表格,我会把它放到会话中。
但是如果他们的API说要在作用域中粘贴电子表格,那么它一定也说明了如何一起使用它,不是吗?
更多编辑
Google Spreadsheets Oauth 2.0身份验证块在这里,有一个流。请注意有关刷新令牌的部分。我会调查这件事。
它说将它存储在某个地方,我会选择会话,或者如果你完全偏执于某个地方的db列,但也不确定这是否正确。只是在这里吐口水。
最终编辑
事实证明,即使是people helping out the Oauth 2.0 don't agree/get it在概念上也是如此。
发布于 2012-07-25 21:54:10
您也许能够找到一个封装了Google API的gem来简化您的任务。
发布于 2017-01-27 07:12:01
@Galen提到的google gem似乎与google-drive-ruby -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希望这能有所帮助。
https://stackoverflow.com/questions/11066768
复制相似问题