2011-09-09 78 views
11

当我们的最终用户在我们的网站上执行某些操作时,我们希望使用Google Doc API生成文档(在我们自己的商业帐户中)。Google API:如何在不重定向的情况下进行身份验证?

的问题是,我们试图实现的OAuth 2.0协议,作为协议V3.0文档中的建议。 apiClient ::身份验证方法执行重定向。这是一个重大的问题,因为我们的用户不知道访问我们自己的业务帐户....我们不想反正给他们机会;)

(换句话说,我们没有创造一个允许我们的用户编辑他们自己的数据,但与我们的数据交互的应用程序,如数据库。)

我读过OAuth 2.0的观点,是为了避免我们管理用户的凭证。我个人是O.K.这个概念,但是对我们来说,我们不希望在谷歌帐户的使用者获得认证......

那么,什么是最好的方式来获得一个有效的验证,而不从最终的任何互动用户?

+2

给休闲读者。在你开始介入之前。考虑将你的gmail用户名和密码硬编码到应用程序并将Chrome移植到PHP来模拟用户登录的替代和较不痛苦的实现。现在重写符合NSAPI的插件体系结构和虚拟机不会很有趣,但至少比OAuth2更好,如果您没有阅读作者建议不要使用http://hueniverse.com/2012/07/oauth-2 -0-and-the-road-to-hell/ –

回答

16

您所描述的并不是如何设计使用三脚OAuth。

3条腿OAuth全部关于委托身份验证,其中用户(知道他的密码)可以授予对应用程序有限且可更新的资源访问权限。该应用程序永远不会看到用户的密码。有一大堆工作涉及安全地允许应用程序模拟用户。

你可能想要的是使用(2条腿)的OAuth流,其中consumer_id/CONSUMER_SECRET凭据嵌入到你的应用程序。在这里,您的应用程序不是模拟您的最终用户,并且不会涉及浏览器重定向。

下面是关于在谷歌Apps的使用模式OAuth一些进一步的信息: http://googleappsdeveloper.blogspot.com/2011/07/using-2-legged-oauth-with-google-tasks.html

这是3- VS 2-模式的OAuth很好的说明: http://cakebaker.42dh.com/2011/01/10/2-legged-vs-3-legged-oauth/

+1

这两个链接都是oauth1,而不是它在OAuth2中所称的。在OAuth2中,它被称为“客户端凭证”:http://tools.ietf.org/html/rfc6749#section-1.3.4 – drozzy

1

为什么不能为您的企业帐户获得一个OAuth授权并让所有用户使用该帐户。由于听起来您希望每个人都可以访问某个帐户的数据,因此可以从最终用户隐藏详细信息。

访问令牌将被所有用户共享,他们将全部命中同一账户的后端,而不为每个用户自己的帐户的任何授权。

+1

听起来像我需要的,但是OAuth的目标不是重定向来处理身份验证?我如何“硬编码”证书以避免最终用户注意到已经完成了身份验证? – FMaz008

+0

您在使用系统的其他人之前执行身份验证。然后你存储令牌供大家使用。看起来像所有用户都共享同一个令牌,而不是每个用户拥有自己的令牌。 –

+0

嗯,好吧,但那仍然不能帮助我。我试图实现该协议,现在所有用户都被重定向到一个页面:***网站正在请求权限: 管理您的文档 在Google文档中查看和管理您的文档 上传新文档 (更多信息)。 ***我不希望我的用户看到... – FMaz008

3

您将需要使用服务帐户。基本上你很难将这个帐户的访问权限编入你的服务器应用程序。然后,您使用共享来访问您想要的内容的帐户。例如,您可以使用SERVICE ACCOUNT共享Google文档或Google Analytics配置文件。

这是建立服务帐户,并登录,然后使用它的一个完整的示例实现。

https://gist.github.com/fulldecent/6728257

+0

是的,所有评论者。这是我第三次在回答中发布此链接。是的,这是一个有效的答案。其他问题是http://stackoverflow.com/questions/9932090/google-analytics-api-v3-authorization-to-allow-access-to-my-data/19121069#19121069和http://stackoverflow.com/questions/13111396 /访问谷歌日历事件 - 从 - 具有服务帐户错误存取书房 –

相关问题