带有oauth2-google的PHPMailer是否使用get_oauth_token

问题描述

我们已经通过oauth2-google(通过GitHub)实现了PHPMailer:没问题。

但是我试图理解使用get_oauth_token授予代码背后的逻辑。 独立运行时,它只是简单地“循环”到授权端点并返回以获取授权令牌,然后使用该令牌向令牌端点请求访问令牌和刷新令牌。然后,开发人员将刷新令牌作为参数粘贴到PHPMailer的OAuth包装器类的实例中。一切都很简单。

我的难题是:

    然后,PHPMailer OAuth和联盟的OAuth客户端会使用
  • get_oauth_token.PHP

  • 后者是否在不调用get_oauth_token的情况下本身获得了授权和访问令牌(如有必要,还获得了新的刷新令牌)。

PHPMailer发布的示例中,redirectURI(即get_oauth_token的URI)没有传递给Google提供程序实例,并且我们正在执行的(到目前为止...)实现也没有这样做。因此,我假设它不使用get_oauth_token或任何类似的回调机制,因为必须以与get_oauth_token本身相同的方式在Google Developer Console中预先定义必要的重定向URI。但是thePHPleague / oauth2-google的Readme.md表示应指定一个

但是…League的OAuth客户端的Abstract Provider类包含__construct来设置一些选项,其中包括redirectUri。稍后在getAuthorizationParameters中,它会设置一个redirectUri(如果未提供的话),并在例如GetAcccesstoken中使用redirectUri。

谁能确切说明在这种情况下如何使用redirectURI?

解决方法

redirectUri是必需的,以便在用户登录Google后,Google重定向回原始网站以完成OAuth交易。一旦访问令牌和刷新令牌可用,除非刷新令牌无效,否则redirectUri将(可能)不再使用。

我不知道这与PHPMailer有什么关系,所以我无法回答问题的那一部分。