Google API:如何在不重定向的情况下进行身份验证?

时间:2011-09-09 21:09:02

标签: oauth oauth-2.0 google-docs-api

当我们的最终用户在我们的网站上执行某些操作时,我们希望使用Google Doc API生成文档(在我们自己的商家帐户中)。

问题是我们已尝试实施OAuth 2.0协议,如v3.0协议文档中所述。 apiClient :: authentication方法执行重定向。这是一个主要问题,因为我们的用户不知道对我们自己的企业帐户的访问....我们也不想让他们访问;)

(换句话说,我们不是创建一个允许我们的用户编辑他们自己的数据的应用程序,而是与我们的数据交互,比如数据库。)

我已经读到OAuth 2.0的目的是避免我们管理用户的凭据。我个人是O.K.这个概念,但在我们的情况下,我们不希望在我们的用户的谷歌帐户中进行身份验证...

那么,在没有最终用户的任何交互的情况下获得有效身份验证的最佳方法是什么?

3 个答案:

答案 0 :(得分:17)

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

三脚OAuth完全是关于委派身份验证,其中用户(知道他的密码)可以授予对应用程序的有限和可撤销资源访问权限。该应用程序永远不会看到用户的密码。有许多工作涉及安全地允许应用程序冒充用户。

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

以下是有关在Google Apps中使用2-legged OAuth的更多信息: http://googleappsdeveloper.blogspot.com/2011/07/using-2-legged-oauth-with-google-tasks.html

这是对3对双腿OAuth的一个很好的描述: http://cakebaker.42dh.com/2011/01/10/2-legged-vs-3-legged-oauth/

答案 1 :(得分:4)

您需要使用服务帐户。基本上,您正在将此帐户的访问权限硬编码到服务器应用程序中。然后,您使用共享来访问所需内容的帐户。例如,您可以与SERVICE ACCOUNT共享Google文档或Google Analytics配置文件。

以下是设置服务帐户,记录并使用它的完整示例实现。

更新2018-12-12:https://gist.github.com/fulldecent/6728257

答案 2 :(得分:1)

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

访问令牌将由所有用户共享,并且他们都会在不对每个用户自己的帐户进行任何授权的情况下返回同一帐户。