GoogleClientConfig.php (1899B)
1 <?php 2 3 /** 4 * This program is free software: you can redistribute it and/or modify 5 * it under the terms of the GNU Lesser General Public License as published by 6 * the Free Software Foundation, either version 3 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public License 15 * along with this program. If not, see <http://www.gnu.org/licenses/>. 16 */ 17 18 namespace fkooman\OAuth\Client; 19 20 use fkooman\OAuth\Client\Exception\ClientConfigException; 21 22 class GoogleClientConfig extends ClientConfig implements ClientConfigInterface 23 { 24 public function __construct(array $data) 25 { 26 // check if array is Google configuration object 27 if (!isset($data['web'])) { 28 throw new ClientConfigException("no configuration 'web' found, possibly wrong client type"); 29 } 30 foreach (array('client_id', 'client_secret', 'auth_uri', 'token_uri', 'redirect_uris') as $key) { 31 if (!isset($data['web'][$key])) { 32 throw new ClientConfigException(sprintf("missing field '%s'", $key)); 33 } 34 } 35 36 // we map Google configuration to ClientConfig configuration 37 $clientData = array( 38 "client_id" => $data['web']['client_id'], 39 "client_secret" => $data['web']['client_secret'], 40 "authorize_endpoint" => $data['web']['auth_uri'], 41 "token_endpoint" => $data['web']['token_uri'], 42 "redirect_uri" => $data['web']['redirect_uris'][0], 43 "credentials_in_request_body" => true, 44 ); 45 parent::__construct($clientData); 46 } 47 }