public static function HandelException(FacebookApiException $objFBException) { switch ($objFBException->getMessage()) { case 'Error validating access token: The session has been invalidated because the user has changed the password.': throw new MFBFBPermissionsException(); break; case 'Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.': throw new MFBFBPermissionsException(); break; default: throw $objFBException; break; } }
/** * 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 $result array A record storing the error message returned * by a failed API call. */ protected function throwAPIException($result) { $e = new FacebookApiException($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; }
/** * Analyzes the supplied result to see if it was thrown * because the access token is no longer valid. If that is * the case, then the persistent store is cleared. * * @param $result array A record storing the error message returned * by a failed API call. */ protected function throwAPIException($result) { $e = new FacebookApiException($result); switch ($e->getType()) { // OAuth 2.0 Draft 00 style case 'OAuthException': // OAuth 2.0 Draft 10 style case 'invalid_token': $message = $e->getMessage(); if ((strpos($message, 'Error validating access token') !== false) || (strpos($message, 'Invalid OAuth access token') !== false)) { $this->setAccessToken(null); $this->user = 0; $this->clearAllPersistentData(); } } throw $e; }
/** * 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 FacebookApiException */ 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 FacebookApiException($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; }
public function testExceptionTypeDefault() { $e = new FacebookApiException(array('error' => false)); $this->assertEquals('Exception', $e->getType()); }
/** * 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 FacebookApiException */ 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 FacebookApiException($result); if ($e->getType() === 'OAuthException') { $this->setSession(null); } throw $e; } /*echo '<pre>'; print_r($params); print_r($result); echo '</pre>'; die();*/ return $result; }
/** * 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 FacebookApiException */ 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 $json = new Services_JSON(SERVICES_JSON_LOOSE_TYPE); $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 FacebookApiException($result); if ($e->getType() === 'OAuthException') { $this->setSession(null); } throw $e; } return $result; }
protected function handleFacebookApiError(\FacebookApiException $exception, FacebookSessionPersistence $facebook, $token) { $result = $exception->getResult(); if (isset($result['error'])) { $error = $result['error']; if (isset($error['code'])) { $code = $error['code']; if (isset($error['error_subcode'])) { $subCode = $error['error_subcode']; if ($code == 190) { if ($subCode == 463) { return array('success' => 'false', 'error' => 11, 'errorMsg' => 'Token expired'); } else { return array('success' => 'false', 'error' => 10, 'errorMsg' => 'Token invalid'); } } else { return array('success' => 'false', 'error' => 12, 'errorMsg' => "Token invalid code: {$code} Error: " . implode($error, ',')); } } else { return array('success' => 'false', 'error' => 67, 'errorMsg' => "Unknown error, please try again later. Error: " . implode($error, ',')); } } else { return array('success' => 'false', 'error' => 68, 'errorMsg' => "Unknown error, please try again later. Error: " . implode($error, ',')); } } else { return array('success' => 'false', 'error' => 69, 'errorMsg' => 'Unknown error, please try again later'); } }