Source of file CtctOAuth2.php
Size: 3,250 Bytes - Last Modified: 2021-12-23T10:20:09+00:00
/var/www/docs.ssmods.com/process/src/src/Ctct/Auth/CtctOAuth2.php
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | <?php namespace Ctct\Auth; use Ctct\Util\Config; use Ctct\Util\RestClient; use Ctct\Exceptions\OAuth2Exception; /** * Class that implements necessary functionality to obtain an access token from a user * * @package Auth * @author Constant Contact */ class CtctOAuth2 { public $clientId; public $clientSecret; public $redirectUri; public $props; public function __construct($clientId, $clientSecret, $redirectUri, $restClient = null) { $this->clientId = $clientId; $this->clientSecret = $clientSecret; $this->redirectUri = $redirectUri; $this->restClient = ($restClient) ? $restClient : new RestClient(); } /** * Get the URL at which the user can authenticate and authorize the requesting application * @param boolean $server - Whether or not to use OAuth2 server flow, alternative is client flow * @param string $state - An optional value used by the client to maintain state between the request and callback. * @return string $url - The url to send a user to, to grant access to their account */ public function getAuthorizationUrl($server = true, $state = null) { $responseType = ($server) ? Config::get('auth.response_type_code') : Config::get("auth.response_type_token"); $params = array( 'response_type' => $responseType, 'client_id' => $this->clientId, 'redirect_uri' => $this->redirectUri ); // add the state param if it was provided if ($state != null) { $params['state'] = $state; } $url = Config::get('auth.base_url') . Config::get('auth.authorization_endpoint'); return $url . '?' . http_build_query($params); } /** * Obtain an access token * @param string $code - code returned from Constant Contact after a user has granted access to their account * @return array * @throws \Ctct\Exceptions\OAuth2Exception */ public function getAccessToken($code) { $params = array( 'grant_type' => Config::get('auth.authorization_code_grant_type'), 'client_id' => $this->clientId, 'client_secret' => $this->clientSecret, 'code' => $code, 'redirect_uri' => $this->redirectUri ); $url = Config::get('auth.base_url') . Config::get('auth.token_endpoint') . '?' . http_build_query($params); $response = $this->restClient->post($url); $responseBody = json_decode($response->body, true); if (array_key_exists('error', $responseBody)) { throw new OAuth2Exception($responseBody['error'] . ': ' . $responseBody['error_description']); } return $responseBody; } /** * Get an information about an access token * @param string $accessToken - Constant Contact OAuth2 access token * @return array * @throws \Ctct\Exceptions\CtctException */ public function getTokenInfo($accessToken) { $url = Config::get('auth.base_url') . Config::get('auth.token_info'); $response = $this->restClient->post($url, array(), "access_token=" . $accessToken); return json_decode($response->body, true); } } |