Oauth 2.0 Google Oauth2应用程序类型Web服务器与桌面应用程序?

Oauth 2.0 Google Oauth2应用程序类型Web服务器与桌面应用程序?,oauth-2.0,google-oauth,Oauth 2.0,Google Oauth,我正在尝试为我的服务器创建一个web应用程序,它可以将我的网站表单连接到GoogleSheet。在生成OAuth客户端ID和密码时,我选择了“webserver”,需要输入一个回调URI来处理作为响应从Google返回的授权码 现在,我创建了另一个客户端id,但这次我选择了应用程序类型为“桌面”,不需要输入任何重定向URI。在我的PHP应用程序中,我使用重定向URI作为urn:ietf:wg:oauth:2.0:oob 然而,在这两种情况下,我都能够获得访问令牌和刷新令牌,并且我的Googl

我正在尝试为我的服务器创建一个web应用程序,它可以将我的网站表单连接到GoogleSheet。在生成OAuth客户端ID和密码时,我选择了“webserver”,需要输入一个回调URI来处理作为响应从Google返回的授权码

现在,我创建了另一个客户端id,但这次我选择了应用程序类型为“桌面”,不需要输入任何重定向URI。在我的PHP应用程序中,我使用重定向URI作为
urn:ietf:wg:oauth:2.0:oob

然而,在这两种情况下,我都能够获得访问令牌和刷新令牌,并且我的GoogleSheetAPI工作顺利

所以我的问题是,为什么我应该选择应用程序类型为“Webserver”,并通过输入“重定向URI”执行额外的步骤?这样做的好处是什么

您可以在此处检查快速启动Oauthflow

所以我的问题是,为什么我应该选择应用程序类型为“Webserver”,并通过输入“重定向URI”执行额外的步骤?这样做的好处是什么

安全。Web服务器客户端将向服务器返回身份验证。Installed会将其返回到请求发出的位置。如果有人获取了你的客户端id和web应用的机密,他们将无法使用它。但是,如果有人获得了您的客户端id和已安装应用程序的机密,他们可以轻松地使用它来模拟您的开发人员帐户

什么是客户id和客户机密。 将客户机id视为登录名,将密码视为密码。这个登录名和密码将您的项目标识给Google,并将该项目的开发人员标识为您

开发人员负责此登录名和密码。如果它被偷了,那么据谷歌所知,它是你的应用程序在使用它,谷歌没有办法知道其他明智的做法。如果桌面应用程序的登录名和密码被盗,有人可能会安装一个应用程序,而且据任何人所知,它似乎是你的应用程序

你创建了超级棒的电子邮件应用程序,可以访问用户的gmail帐户。它变得非常流行,很多人都知道它的名字。有人窃取了你的客户id,并创建了一个与你超级棒的电子邮件应用一模一样的应用程序。任何人都不可能知道它不是。因为它被设置为一个桌面应用程序,所以这个人可以把它安装起来,并开始从你的潜在用户那里获取授权,而他们对此一无所知。它看起来和你的应用程序一模一样,只有响应会发送到urn:ietf:wg:oauth:2.0:oob,这是安装此应用程序以模仿你的应用程序的人的主机服务器


除非您的应用程序在用户机器上运行,否则使用已安装的凭据确实不是一个好主意。也就是说,没有什么可以阻止你这么做,它会起作用。

你的意思是,如果我设置
桌面应用程序
,安装在该桌面上的任何数量的服务器都可以模拟我的帐户。是吗?我是说如果你把它设为桌面应用程序。有人偷了你的客户id和客户秘密。然后,他们可以用它来创建一个应用程序,据谷歌所知,这个应用程序就是你和登录它的用户。这个邪恶的人可能会对API发送大量垃圾邮件,以至于谷歌会将你锁定为垃圾邮件用户,直到时间结束,你都无法访问你的帐户。此外,用户数据将代表您被盗,这可能会使您因法律原因而承担责任。