【问题标题】:SwiftMailer gmail oauth refresh access tokenSwiftMailer gmail oauth 刷新访问令牌
【发布时间】:2015-08-21 23:22:30
【问题描述】:

我想使用 oauth 身份验证通过 gmail SMTP 发送电子邮件。

在本文档中: https://github.com/swiftmailer/swiftmailer/blob/b11f0054d96fa49200d10401e34d879e46c2a2c6/lib/classes/Swift/Transport/Esmtp/Auth/XOAuth2Authenticator.php

我可以找到这个示例代码:

$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 587, 'tls')
  ->setAuthMode('XOAUTH2')
  ->setUsername('YOUR_EMAIL_ADDRESS')
  ->setPassword('YOUR_ACCESS_TOKEN');

很好,它的工作。但它只工作 1 小时,因为访问令牌在此期间过期。我没有找到任何方法来更新访问令牌?我们如何将刷新令牌传递给 swiftmailer?

【问题讨论】:

  • phpmailer 正在使用刷新令牌
  • 对于通过 OAuth2 查找有关 Gmail SMTP 的更多信息的人,请查看此link

标签: php email swiftmailer


【解决方案1】:

setPassword 应该从它更新的地方获取令牌,所以你需要创建一个函数来从它不断更新的地方返回这个令牌,在谷歌 api 的情况下的网络服务如下这些链接将有所帮助:

Google OAuth 2.0 refresh token for web application with public access

https://developers.google.com/accounts/docs/OAuth2WebServer#offline

【讨论】:

  • 他们让协议能够使用它,但他们无法为每个提供商(谷歌、雅虎等)提供它。很多网站都使用 oauth,因为它已经很容易刷新了令牌他们不会费心为每个网站添加这个..
  • @NawfalSerr 有没有办法连接到 Swift_SmtpTransport 以确定授权是否失败,以便我可以使用刷新令牌来更新我的访问令牌?
猜你喜欢
  • 2015-04-01
  • 2017-06-09
  • 2021-09-13
  • 1970-01-01
  • 1970-01-01
  • 2013-08-18
  • 2013-11-23
  • 2016-08-13
  • 2019-03-16
相关资源
最近更新 更多