private function accessTokenRequest(array $p) { if ($this->clientConfig->getCredentialsInRequestBody()) { // provide credentials in the POST body $p['client_id'] = $this->clientConfig->getClientId(); $p['client_secret'] = $this->clientConfig->getClientSecret(); } else { // use basic authentication $this->httpClient->setBasicAuth($this->clientConfig->getClientId(), $this->clientConfig->getClientSecret()); } try { $this->httpClient->addHeader('Accept', 'application/json'); $this->httpClient->addPostFields($p); $responseData = $this->httpClient->post($this->clientConfig->getTokenEndpoint()); // some servers do not provide token_type, so we allow for setting // a default // issue: https://github.com/fkooman/php-oauth-client/issues/13 if (null !== $this->clientConfig->getDefaultTokenType()) { if (is_array($responseData) && !isset($responseData['token_type'])) { $responseData['token_type'] = $this->clientConfig->getDefaultTokenType(); } } // if the field "expires_in" has the value null, remove it // issue: https://github.com/fkooman/php-oauth-client/issues/17 if ($this->clientConfig->getAllowNullExpiresIn()) { if (is_array($responseData) && array_key_exists('expires_in', $responseData)) { if (null === $responseData['expires_in']) { unset($responseData['expires_in']); } } } // if the field "scope" is empty string a default can be set // through the client configuration // issue: https://github.com/fkooman/php-oauth-client/issues/20 if (null !== $this->clientConfig->getDefaultServerScope()) { if (is_array($responseData) && isset($responseData['scope']) && '' === $responseData['scope']) { $responseData['scope'] = $this->clientConfig->getDefaultServerScope(); } } // the service can return a string value of the expires_in // parameter, allow to convert to number instead // issue: https://github.com/fkooman/php-oauth-client/issues/40 if ($this->clientConfig->getAllowStringExpiresIn()) { if (is_array($responseData) && isset($responseData['expires_in']) && is_string($responseData['expires_in'])) { $responseData['expires_in'] = intval($responseData['expires_in']); } } if ($this->clientConfig->getUseCommaSeparatedScope()) { if (is_array($responseData) && isset($responseData['scope'])) { $responseData['scope'] = str_replace(',', ' ', $responseData['scope']); } } // issue: https://github.com/fkooman/php-oauth-client/issues/41 if ($this->clientConfig->getUseArrayScope()) { if (is_array($responseData) && isset($responseData['scope'])) { if (is_array($responseData['scope'])) { $responseData['scope'] = implode(' ', $responseData['scope']); } } } return new WPOF_Token_Response($responseData); } catch (RuntimeException $e) { return false; } }