72 lines
1.7 KiB
PHP
72 lines
1.7 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Copyright 2013-2017 Horde LLC (http://www.horde.org/)
|
||
|
*
|
||
|
* See the enclosed file COPYING for license information (LGPL). If you
|
||
|
* did not receive this file, see http://www.horde.org/licenses/lgpl21.
|
||
|
*
|
||
|
* @category Horde
|
||
|
* @copyright 2013-2017 Horde LLC
|
||
|
* @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
|
||
|
* @package Imap_Client
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Generates an OAuth 2.0 authentication token as used in the Gmail XOAUTH2
|
||
|
* authentication mechanism.
|
||
|
*
|
||
|
* See: https://developers.google.com/gmail/xoauth2_protocol
|
||
|
*
|
||
|
* @author Michael Slusarz <slusarz@horde.org>
|
||
|
* @category Horde
|
||
|
* @copyright 2013-2017 Horde LLC
|
||
|
* @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
|
||
|
* @package Imap_Client
|
||
|
* @since 2.16.0
|
||
|
*/
|
||
|
class Horde_Imap_Client_Password_Xoauth2
|
||
|
implements Horde_Imap_Client_Base_Password
|
||
|
{
|
||
|
/**
|
||
|
* Access token.
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public $access_token;
|
||
|
|
||
|
/**
|
||
|
* Username.
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public $username;
|
||
|
|
||
|
/**
|
||
|
* Constructor.
|
||
|
*
|
||
|
* @param string $username The username.
|
||
|
* @param string $access_token The access token.
|
||
|
*/
|
||
|
public function __construct($username, $access_token)
|
||
|
{
|
||
|
$this->username = $username;
|
||
|
$this->access_token = $access_token;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Return the password to use for the server connection.
|
||
|
*
|
||
|
* @return string The password.
|
||
|
*/
|
||
|
public function getPassword()
|
||
|
{
|
||
|
// base64("user=" {User} "^Aauth=Bearer " {Access Token} "^A^A")
|
||
|
// ^A represents a Control+A (\001)
|
||
|
return base64_encode(
|
||
|
'user=' . $this->username . "\1" .
|
||
|
'auth=Bearer ' . $this->access_token . "\1\1"
|
||
|
);
|
||
|
}
|
||
|
|
||
|
}
|