/** * Invoke the Graph API. * * @param String $path the path (required) * @param String $method the http method (default 'GET') * @param Array $params the query/post data * @return the decoded response object * @throws JFBCFacebookApiException */ protected function _graph($path, $method = 'GET', $params = array()) { if (is_array($method) && empty($params)) { $params = $method; $method = 'GET'; } $params['method'] = $method; // method override as we always do a POST $result = json_decode($this->_oauthRequest($this->getUrl('graph', $path), $params), true); // results are returned, errors are thrown if (is_array($result) && isset($result['error'])) { $e = new JFBCFacebookApiException($result); switch ($e->getType()) { // OAuth 2.0 Draft 00 style case 'OAuthException': // OAuth 2.0 Draft 10 style // OAuth 2.0 Draft 10 style case 'invalid_token': $this->setSession(null); } throw $e; } return $result; }
/** * Analyzes the supplied result to see if it was thrown * because the access token is no longer valid. If that is * the case, then we destroy the session. * * @param array $result A record storing the error message returned * by a failed API call. */ protected function throwAPIException($result) { $e = new JFBCFacebookApiException($result); switch ($e->getType()) { // OAuth 2.0 Draft 00 style case 'OAuthException': // OAuth 2.0 Draft 10 style // OAuth 2.0 Draft 10 style case 'invalid_token': // REST server errors are just Exceptions // REST server errors are just Exceptions case 'Exception': $message = $e->getMessage(); if (strpos($message, 'Error validating access token') !== false || strpos($message, 'Invalid OAuth access token') !== false || strpos($message, 'An active access token must be used') !== false) { $this->destroySession(); } break; } throw $e; }