/**
  * callback() method check exchanged code and connect the customer
  *
  * @params array $aParams
  */
 public function callback(array $aParams = null)
 {
     if (!empty($aParams['state']) && self::$oSession->get('state') == $aParams['state'] && !empty($aParams['code'])) {
         // get oauth_token
         $sResponse = BT_FPCModuleTools::fileGetContent($this->sGraphUrl . '&code=' . $aParams['code']);
         if (!empty($sResponse)) {
             // set params
             $aQUERY = array();
             // parse URI
             parse_str($sResponse, $aQUERY);
             if (!empty($aQUERY['access_token'])) {
                 // set session
                 self::$oSession->set('access_token', $aQUERY['access_token']);
                 return $this->connect(array('code' => $aParams['code'], 'access_token' => $aQUERY['access_token']));
             }
         } else {
             throw new BT_FacebookException(FacebookPsConnect::$oModule->l('Internal server error. Facebook access token is empty or the connect method to the Facebook URL with HTTPS is not allowed. Please contact the merchant to warn him', 'facebook-connect_class'), 523);
         }
     } else {
         throw new BT_FacebookException(FacebookPsConnect::$oModule->l('The state doesn\'t match. You may be a victim of cross-site request forgery or you decided to cancel your connect processing. Please close this window', 'facebook-connector_class'), 524);
     }
 }