public function authenticate(array $request, $redirectUri = null) { $token = $this->requestAccessToken($request, $redirectUri); if ($token == null) { return null; } $token = $this->parseToken($token); if (!$this->isValidToken($token)) { $this->setError(Error::createFromRequest($request, Error::INVALID_TOKEN)); return null; } return $this->token = $this->createToken($token); }
protected function requestAccessToken(array $request, $redirectUri) { self::getStorage()->delete($this->getStorageKey()); if (!isset($request['oauth_verifier'])) { $this->setError(Error::createFromRequest($request, Error::INVALID_VERIFIER)); return null; } $parameters = array('oauth_verifier' => $request['oauth_verifier']); $data = $this->execOAuthRequest('GET', $this->getAccessTokenUrl(), $parameters); if (false === strpos($data, '&')) { $this->setError(Error::createFromRequest($data)); return null; } return $data; }
protected function requestAccessToken(array $request, $redirectUri) { if (!isset($request['code'])) { $this->setError(Error::createFromRequest($request, Error::INVALID_CODE)); return null; } $code = (string) $request['code']; $parameters = array('client_id' => $this->getId(), 'client_secret' => $this->getSecret(), 'redirect_uri' => $redirectUri, 'code' => $code, 'grant_type' => 'authorization_code'); $body = $this->execPost($this->getTokenUrl(), $parameters); $data = json_decode($body, true); if ($data == null) { return $body; } return $data; }