| 1 |
2
|
Manuela
|
<?php
|
| 2 |
|
|
/**
|
| 3 |
|
|
* PHPMailer - PHP email creation and transport class.
|
| 4 |
|
|
* PHP Version 5.4
|
| 5 |
|
|
* @package PHPMailer
|
| 6 |
|
|
* @link https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
|
| 7 |
|
|
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
|
| 8 |
|
|
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
| 9 |
|
|
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
| 10 |
|
|
* @author Brent R. Matzelle (original founder)
|
| 11 |
|
|
* @copyright 2012 - 2014 Marcus Bointon
|
| 12 |
|
|
* @copyright 2010 - 2012 Jim Jagielski
|
| 13 |
|
|
* @copyright 2004 - 2009 Andy Prevost
|
| 14 |
|
|
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
| 15 |
|
|
* @note This program is distributed in the hope that it will be useful - WITHOUT
|
| 16 |
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
| 17 |
|
|
* FITNESS FOR A PARTICULAR PURPOSE.
|
| 18 |
|
|
*/
|
| 19 |
|
|
|
| 20 |
|
|
/**
|
| 21 |
|
|
* PHPMailerOAuthGoogle - Wrapper for League OAuth2 Google provider.
|
| 22 |
|
|
* @package PHPMailer
|
| 23 |
|
|
* @author @sherryl4george
|
| 24 |
|
|
* @author Marcus Bointon (@Synchro) <phpmailer@synchromedia.co.uk>
|
| 25 |
|
|
* @link https://github.com/thephpleague/oauth2-client
|
| 26 |
|
|
*/
|
| 27 |
|
|
class PHPMailerOAuthGoogle
|
| 28 |
|
|
{
|
| 29 |
|
|
private $oauthUserEmail = '';
|
| 30 |
|
|
private $oauthRefreshToken = '';
|
| 31 |
|
|
private $oauthClientId = '';
|
| 32 |
|
|
private $oauthClientSecret = '';
|
| 33 |
|
|
|
| 34 |
|
|
/**
|
| 35 |
|
|
* @param string $UserEmail
|
| 36 |
|
|
* @param string $ClientSecret
|
| 37 |
|
|
* @param string $ClientId
|
| 38 |
|
|
* @param string $RefreshToken
|
| 39 |
|
|
*/
|
| 40 |
|
|
public function __construct(
|
| 41 |
|
|
$UserEmail,
|
| 42 |
|
|
$ClientSecret,
|
| 43 |
|
|
$ClientId,
|
| 44 |
|
|
$RefreshToken
|
| 45 |
|
|
) {
|
| 46 |
|
|
$this->oauthClientId = $ClientId;
|
| 47 |
|
|
$this->oauthClientSecret = $ClientSecret;
|
| 48 |
|
|
$this->oauthRefreshToken = $RefreshToken;
|
| 49 |
|
|
$this->oauthUserEmail = $UserEmail;
|
| 50 |
|
|
}
|
| 51 |
|
|
|
| 52 |
|
|
private function getProvider()
|
| 53 |
|
|
{
|
| 54 |
|
|
return new League\OAuth2\Client\Provider\Google([
|
| 55 |
|
|
'clientId' => $this->oauthClientId,
|
| 56 |
|
|
'clientSecret' => $this->oauthClientSecret
|
| 57 |
|
|
]);
|
| 58 |
|
|
}
|
| 59 |
|
|
|
| 60 |
|
|
private function getGrant()
|
| 61 |
|
|
{
|
| 62 |
|
|
return new \League\OAuth2\Client\Grant\RefreshToken();
|
| 63 |
|
|
}
|
| 64 |
|
|
|
| 65 |
|
|
private function getToken()
|
| 66 |
|
|
{
|
| 67 |
|
|
$provider = $this->getProvider();
|
| 68 |
|
|
$grant = $this->getGrant();
|
| 69 |
|
|
return $provider->getAccessToken($grant, ['refresh_token' => $this->oauthRefreshToken]);
|
| 70 |
|
|
}
|
| 71 |
|
|
|
| 72 |
|
|
public function getOauth64()
|
| 73 |
|
|
{
|
| 74 |
|
|
$token = $this->getToken();
|
| 75 |
|
|
return base64_encode("user=" . $this->oauthUserEmail . "\001auth=Bearer " . $token . "\001\001");
|
| 76 |
|
|
}
|
| 77 |
|
|
}
|