2016-03-27 8 views
0

Hier ist mein Code zum Abrufen von Benutzerinformationen von Facebook. Ich benutze PHP SDK.Access Token nicht abrufen von Daten aus Facebook PHP sdk

public function indexAction() 
    { 

     $fb = new Facebook\Facebook([ 
      'app_id' => '934741473308351', 
      'app_secret' => 'de001d018a7769eb17eb11300e772a0c', 
      'default_graph_version' => 'v2.5', 
      'default_access_token' => isset($_SESSION['facebook_access_token']) ? $_SESSION['facebook_access_token'] : 'APP-ID|APP-SECRET' 


     ]); 
     try { 
      if(isset($_SESSION['facebook_access_token'])){ 
       $response = $fb->get('/me'); 
       $userNode = $response->getGraphUser(); 
       Mage::log("Email====>Before".$userNode->getFirstName()); 
       // echo 'Name: ' . $user['first_name']; 
       $this->_redirectUrl('/app-new/app/#/myAccount'); 
       exit; 
      } 

      //redirect, or do whatever you want 
     } catch(Facebook\Exceptions\FacebookResponseException $e) { 
      //echo 'Graph returned an error: ' . $e->getMessage(); 
     } catch(Facebook\Exceptions\FacebookSDKException $e) { 
      //echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
     } 
     $helper = $fb->getRedirectLoginHelper(); 
     $permissions = ['email', 'user_likes']; // optional 
     $loginUrl = $helper->getLoginUrl(Mage::getBaseUrl().'facebook/facebook/authenticate', $permissions); 

     echo $loginUrl; 

    } 

    public function authenticateAction(){ 
     Mage::log("Authenticate======="); 

     $fb = new Facebook\Facebook([ 
      'app_id' => '934741473308351', 
      'app_secret' => 'de001d018a7769eb17eb11300e772a0c', 
      'default_graph_version' => 'v2.5', 
     ]); 

      $helper = $fb->getRedirectLoginHelper(); 
      try { 
       $accessToken = $helper->getAccessToken(); 
      } catch(Facebook\Exceptions\FacebookResponseException $e) { 
       // When Graph returns an error 
       echo 'Graph returned an error: ' . $e->getMessage(); 
       exit; 
      } catch(Facebook\Exceptions\FacebookSDKException $e) { 
       // When validation fails or other local issues 
       echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
       exit; 
      } 
      if (isset($accessToken)) { 
       // Logged in! 

       Mage::log("Access Token=================>".(string) $accessToken); 

       $oAuth2Client = $fb->getOAuth2Client(); 

// Exchanges a short-lived access token for a long-lived one 

       $fb->setDefaultAccessToken((string) $accessToken); 
       $_SESSION['facebook_access_token'] = (string) $accessToken; 

       try { 
        $response = $fb->get('/me'); 
        $userNode = $response->getGraphUser(); 
        Mage::log("Email====>Before".$userNode->getFirstName()); 
        $customer = $this->checkIfUserExists($userNode); 
        $this->_redirectUrl('/app-new/app/#/myAccount'); 
        exit; 
       } catch(Facebook\Exceptions\FacebookResponseException $e) { 
        // When Graph returns an error 
        echo 'Graph returned an error: ' . $e->getMessage(); 
        exit; 
       } catch(Facebook\Exceptions\FacebookSDKException $e) { 
        // When validation fails or other local issues 
        echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
        exit; 
       } 
      } 


    } 

Ich habe das Ergebnis zuerst, aber ich bekomme kein Ergebnis danach. Liegt es an Zugriff oder etwas anderes? Was mache ich hier falsch?

+0

bitte ausführlicher, Ihre Frage ist derzeit ziemlich unklar. Welches Ergebnis bekommst du und wann genau? Nach was bekommst du kein Ergebnis. was genau willst du bekommen? – luschn

+1

Ich möchte E-Mail-ID, Vorname, Nachname und Profilbild erhalten. Ich bekomme null, wenn ich $ userNode-> getEmail() – androider

+0

beantworte. Bitte denken Sie beim nächsten Mal daran, Google oder die Stackoverflow-Suche zu verwenden, diese Frage wurde schon oft gestellt. – luschn

Antwort

0

Sie vermissen ein neues Feature von v2.4 der Graph API, es heißt "Declarative Fields". Sie haben nun einen field Parameter hinzufügen, um die Felder, die Sie erhalten möchten angeben, sonst nur Sie id und name erhalten: https://developers.facebook.com/docs/apps/changelog#v2_4

Also, stellen Sie sicher, dass Ihre Login korrekt funktioniert und Sie erhalten für die email Erlaubnis gefragt, wenn Sie autorisieren deine App

Verwandte Themen