【问题标题】:Google OAuth : How to accept consent without browserGoogle OAuth:如何在没有浏览器的情况下接受同意
【发布时间】:2017-08-22 08:01:26
【问题描述】:

我在 AWS 上有一个 JAVA Web 服务,需要通过我的服务 gmail 帐户发送电子邮件。我已经设置了几乎所有内容并获得了要求我在浏览器中打开并接受同意的 URL。但是,我无法使用浏览器在 AWS 中打开 URL。我试图在本地计算机上打开 URL,但它不起作用,因为 URL 在接受请求后需要重定向到服务器 localhost。

有没有什么方法可以在没有浏览器的情况下接受请求?我可以在控制台中提供我的服务帐号和密码然后接受请求吗?

非常感谢。

【问题讨论】:

    标签: java oauth gmail


    【解决方案1】:

    您能否详细解释一下您的应用程序中的所有组件。您正在谈论接受同意的 URL,猜想您正在谈论 google 登录 URL。如果您有自己的 UI 应用程序,并且您希望在身份验证后重定向到该应用程序,则这适用。是这样吗?电子邮件是在哪里写的,你也有 UI 吗?如果您只需要通过服务帐户发送电子邮件,则可以使用 javamail 和 SMTP 在 Web 服务端完成。为什么需要使用oauth?相反,如果您打算使用正在使用您的应用程序的任何用户的帐户发送电子邮件,那么 oauth 是有意义的。

    【讨论】:

    • 服务很简单。用户留下他们的电子邮件地址并要求提供服务电子邮件。服务器将撰写邮件并通过我自己的 gmail 服务帐户向用户发送电子邮件。我要做的是授权服务器访问 gmail 服务帐户,以便我可以使用 gmail api 向用户发送电子邮件。
    • 我基本上按照步骤 4 中的介绍 developers.google.com/gmail/api/quickstart/java 和股票,因为我无法在 AWS 服务器的浏览器中远程打开 URL。
    • 只需将 java 邮件和 SMTP 与 Gmail 一起使用即可向这些用户发送电子邮件。您有一个服务 gmail 帐户,希望从中发送电子邮件,并且希望将其发送给最终用户。这实际上不是 oauth 的有效用例。这是一个关于如何在 Gmail 中使用 javamail 的好教程。 link
    • 我明白了。非常感谢。
    • 做了一些挖掘,我想你正在做的事情也可以通过对示例代码进行一些调整来完成。您需要从 Google API 控制台获取 pem 或 pk12 文件,而不是 Credentials,使用 GoogleCredentials 作为Credential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT) .setJsonFactory(JSON_FACTORY) .setServiceAccountId("yourserviceaccount@gmail.com") .setServiceAccountScopes(SCOPES) .setServiceAccountPrivateKeyFromPemFile(pemFile) .build();,不过我还没有尝试过。
    猜你喜欢
    • 2011-02-04
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 2019-04-14
    • 2021-12-04
    相关资源
    最近更新 更多