我正在尝试将Google API集成到一个项目(论文项目)中,但我有一些疑问和疑问。因此,这是场景:
我用Java编写了一个后端应用程序,该应用程序仅从命令行运行,并且绝对不与用户交互。其目标是允许传感器和执行器之间进行通讯和交互。一切都很好。现在,我想集成一些东西,以使传感器既可以按一定的周期又可以由于检测到的阈值而备份数据。所以我想,为什么不尝试使用Google云端硬盘。第一个非常有用的链接是:
https://developers.google.com/drive/web/quickstart/quickstart-java
https://developers.google.com/accounts/docs/OAuth2InstalledApp
快速入门示例的魅力十足。但是,它需要进行大量设置:在开发人员控制台(因此有一个帐户)中创建一个项目,启用Drive API,然后创建一个客户端ID和一个客户端密钥。完成这些步骤后,您可以对客户端ID和密码进行硬编码,以形成Google驱动器的请求URL。然后,系统会要求您在浏览器中输入URL,如果不是,请登录,接受并最终将用于获取访问令牌的授权代码复制并粘贴到您的控制台中。哇,相当安全。但是,嘿,我完全同意这一点,最重要的是,在我们拥有Web应用程序,智能手机应用程序或需要用户身份验证和授权的Web服务的情况下,该应用程序才能通过访问其他帐户来完成其工作。但就我而言,我只是希望传感器将数据备份到我的google驱动器上。
这些事实引出了我的第一个问题:为了使用Google API(在本例中为Drive),我是否仍然必须创建一个项目?还是有另一种方法?如果我没记错的话,没有其他方法可以在未在开发人员控制台内创建项目的情况下创建客户端ID和密码。这让我很困惑。为什么我应该创建一个项目以基本上使用某些库?
因此,让我们将前面的假设视为合理的约束,然后继续讨论真正的问题:如何使身份验证过程自动化?在我的情况下,传感器(仅是Java模块)想要备份数据,因此不可能完成所有这些步骤。关于OAuth 2.0的google页面对可以嵌入身份验证过程的不同场景进行了很好的解释,其中包括“用于输入能力有限的设备”的说明。不幸的是,这比其他方法更为复杂,并要求“用户切换到具有更丰富输入功能的设备或计算机,启动浏览器,导航到受限输入设备上指定的URL,登录并输入代码。 ” (哈哈)
因此,我没有放弃,我最终发表了有关OAuth Playground的文章:如何在没有用户干预的情况下授权应用程序(网络或已安装)?(规范?)。这确实是我的解决方案,尤其是当它说:
NB2。如果您想让一个Web应用程序访问您自己的(也只有您自己的)Drive帐户,而又不用费心编写只会运行一次的授权代码,则该技术很好用。只需跳过第1步,然后在第5步中将“ my.drive.app”替换为您自己的电子邮件地址即可。
但是,如果我没记错的话,我认为OAuth Playground只是为了帮助测试和调试使用Google API的项目,不是吗?而且,诸如GoogleAuthorizationCodeFlow和GoogleCredential之类的Google驱动器类(在Java快速入门示例中使用)始终需要客户端ID,客户端密钥等,这使我指向零(创建项目并执行整个图形过程)。
结论:有没有一种方法可以避免“图形”身份验证交互,而仅使用Drive的API将其转换为自动化过程,而无需用户干预?非常感谢,如果有任何提示,提示,答案,指针,我将不胜感激:-)
我在“如何在没有用户干预的情况下授权应用程序(网络或已安装)”上写了SO帖子。(规范?)
它所描述的确实是您的用例的解决方案。您错过的关键是步骤7,您可以在OAuth Playground中输入自己的应用程序的详细信息。从那时起,游乐场开始模拟您的应用程序,因此您可以进行一次性授权并获取刷新令牌。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句