【发布时间】:2020-12-27 22:45:22
【问题描述】:
我们已经使用 oauth2-google(通过 GitHub)实现了 PHPMailer:没问题。
但我试图了解使用 get_oauth_token 授权代码背后的逻辑。 当独立运行时,它只是“循环”到授权端点并返回以获取授权令牌,然后使用它从令牌端点请求访问令牌和刷新令牌。然后,开发人员将刷新令牌作为参数粘贴到 PHPMailer 的 OAuth 包装类的实例化中。一切都非常简单。
我的疑惑是:
- get_oauth_token.php 然后被 PHPMailer OAuth 和 theLeague 的 OAuth 客户端使用
或
- 后者是否在不调用 get_oauth_token 的情况下自行获取授权和访问令牌(以及必要时新的刷新令牌)。
在 PHPMailer 发布的示例中,redirectURI(即 get_oauth_token 的 URI)没有传递给 Google 提供程序实例化,我们的工作(到目前为止......)实现也没有这样做。因此,我假设它不使用 get_oauth_token 或任何类似的回调机制,因为需要像 get_oauth_token 本身那样提前将所需的重定向 URI 定义到 Google Developer 控制台。但是 phpleague / oauth2-google 的 Readme.md 表明应该指定一个 。
但是……theLeague 的 OAuth-client 的 Abstract Provider 类包含一个 __construct 来设置一些选项,其中包括 redirectUri。稍后在 getAuthorizationParameters 中,如果没有提供,它会设置一个 redirectUri,并在 GetAcccessToken 等中使用 redirectUri。
谁能详细说明在这种情况下如何使用redirectURI?
【问题讨论】:
-
get_oauth_token只需要一次,当您最初设置脚本时。获得刷新令牌后,一切就绪。您可能已经注意到,HTTP 操作(例如 OAuth 回调)不适用于 SMTP。除此之外,我不是询问 OAuth 的人,但听起来 OAuth 客户端本身支持处理回调,尽管 PHPMailer 没有使用它。
标签: oauth-2.0 google-oauth phpmailer