2016-05-03 4 views
5

Ich benutze Facebook PHP SDK und versuche, Token-ID von einer Seite an eine andere zu senden. Ich benutze diesen Code - http://www.krizna.com/demo/login-with-facebook-using-php/. Ich benutzeWie kann ich Wert an FacebookRedirectLoginHelper in PHP übergeben

$helper = new FacebookRedirectLoginHelper('http://www.krizna.com/fbconfig.php');

Ich habe versucht, Wert wie folgt zu senden:

$helper = new FacebookRedirectLoginHelper('http://www.krizna.com/fbconfig.php?value='.$value); 

aber ich weiß nicht Wert in fbconfig.php-Datei erhalten, wenn ich versuche:

$value = $_GET['value']; 

Ich habe auch verwendet Sitzung für das Senden von Werten, aber es funktioniert nicht. Wie kann ich einen Wert an FacebookRedirectLoginHelper (fbconfig.php) senden?

fbconfig.php

<?php 

session_start(); 

$value = $_GET['value_new']; 

$fb = new \Facebook\Facebook([ 
    'app_id' => $config->facebook->app_id, 
    'app_secret' => $config->facebook->app_secret 
]); 

$helper = $fb->getRedirectLoginHelper(); 
try { 
    if ($access_token = $helper->getAccessToken()) { 

     try { 
      // Returns a `Facebook\FacebookResponse` object with the requested fields 
      $response = $fb->get('/me?fields=name,id,email,picture', $access_token); 
      $user = $response->getGraphUser(); 
      $fbid = $user->getId();   // To Get Facebook ID 
      $fbfullname = $user->getName(); // To Get Facebook full name 
      $femail = $graphObject->getEmail();// To Get Facebook email ID 
      $_SESSION['FBID'] = $fbid; 
      $_SESSION['FULLNAME'] = $fbfullname; 
      $_SESSION['EMAIL'] = $femail; 
      //Then do whatever you want with that data 

      $value = $_SESSION['value']; 

      header("Location: index.php?value_new=$value"); 

      } catch (\Facebook\Exceptions\FacebookResponseException $e) { 
      error_log('Graph returned an error: ' . $e->getMessage()); 
     } catch (\Facebook\Exceptions\FacebookSDKException $e) { 
      error_log('Facebook SDK returned an error: ' . $e->getMessage()); 
     } 
    } 
} catch (\Facebook\Exceptions\FacebookResponseException $e) { 
    // When Graph returns an error 
    error_log('Graph returned an error: ' . $e->getMessage()); 
} catch (\Facebook\Exceptions\FacebookSDKException $e) { 
    // When validation fails or other local issues 
    error_log('Facebook SDK returned an error: ' . $e->getMessage()); 
} 

index.php

<?php if (isset($_SESSION['FBID'])): ?><!-- After user login --> 
<div class="container"> 
    <h1>value <?php $value_new = $_GET['value_new']; echo $value_new; ?></h1> 
</div> 
<? endif ?> 
+0

Die URL, die Sie FacebookRedirectLoginHelper geben, ist die URL, zu der Facebook weiterleitet, sie werden alle Abfragezeichenfolge ausziehen, die ich sicher bin. Warum benötigt fbconfig das Token? Und ich bin mir sicher, dass dies mit $ _SESSION –

+0

möglich ist. Ich habe versucht mit $ _SESSION, aber es ist immer Null. Wie kann ich es benutzen? – jason

+0

Hallo Jason. Ich schaue mir nur einen Teil meines Codes an, ich werde dir hoffentlich eine Antwort geben. –

Antwort

2

Sie sollten nicht versuchen, den Facebook Access Token über die Abfragezeichenfolge/$_GET[] superglobal zu übergeben. Was Sie verwenden sollten, ist, was Facebook empfiehlt, das ist die $_SESSION[] superglobal.

Da Sie versuchen, das Zugriffstoken von einer Seite an eine andere zu übergeben, rufen Sie das Zugriffstoken auf der ersten Seite $access_token auf. So übergeben es auf eine andere Seite wie folgt vor:

Seite 1:

<?php 
    session_start(); //the very top of your document 
    // ... other code ... 
    $_SESSION['access_token'] = $access_token; 
    // ... other code ... 
?> 

Seite 2:

<?php 
    session_start(); //the very top of your document 
    // ... other code ... 
    $access_token = $_SESSION['access_token']; 
    // ... other code ... 
?> 

Das sollte funktionieren, lassen Sie mich wissen, ob es für Sie arbeitet .

+0

Sitzung mit Cookies ersetzt. – jason

1

Diese Antwort wird mit der Facebook PHP SDK v5.1.2, und wird aus dem Verfahren angepasst habe ich Arbeit in meine eigenen Projekte. Es wird außerdem davon ausgegangen, dass das Autoloading von Composern verwendet wird.

Login Seite

session_start(); 
$fb = new \Facebook\Facebook([ 
    'app_id' => $config->facebook->app_id, //Change these to yours 
    'app_secret' => $config->facebook->app_secret 
]); 

$helper = $fb->getRedirectLoginHelper(); 
$permissions = ['email']; 
$this->view->facebook_url = $helper->getLoginUrl('http://www.krizna.com/fbconfig.php', $permissions); 

fbconfig.php (oder was auch immer Sie möchten, dass Ihre Weiterleitungsseite sein)

session_start(); 
$fb = new \Facebook\Facebook([ 
    'app_id' => $config->facebook->app_id, 
    'app_secret' => $config->facebook->app_secret 
]); 

$helper = $fb->getRedirectLoginHelper(); 
try { 
    if ($access_token = $helper->getAccessToken()) { 

     try { 
      // Returns a `Facebook\FacebookResponse` object with the requested fields 
      $response = $fb->get('/me?fields=name,id,email,picture', $access_token); 
      $user = $response->getGraphUser(); 
      $fbid = $user->getId();    // To Get Facebook ID 
      $fbfullname = $user->getName(); // To Get Facebook full name 
      $femail = $graphObject->getEmail(); // To Get Facebook email ID 
      $_SESSION['FBID'] = $fbid;   
      $_SESSION['FULLNAME'] = $fbfullname; 
      $_SESSION['EMAIL'] = $femail; 
      //Then do whatever you want with that data 
     } catch(\Facebook\Exceptions\FacebookResponseException $e) { 
      error_log('Graph returned an error: ' . $e->getMessage()); 
     } catch(\Facebook\Exceptions\FacebookSDKException $e) { 
      error_log('Facebook SDK returned an error: ' . $e->getMessage()); 
     } 
    } 

} catch (\Facebook\Exceptions\FacebookResponseException $e) { 
    // When Graph returns an error 
    error_log('Graph returned an error: ' . $e->getMessage()); 
} catch (\Facebook\Exceptions\FacebookSDKException $e) { 
    // When validation fails or other local issues 
    error_log('Facebook SDK returned an error: ' . $e->getMessage()); 
} 

Hoffentlich, dass Sie eine Hand gibt. Ich bezweifle nicht, dass mein Code von früheren StackOverflow-Antworten oder Tutorials übernommen wurde.

+0

Ich habe versucht, Wert von fbconfig.php zu index.php nach Sitzung zu senden und Wert zu erhalten, aber es ist Null in beiden Fällen. Wie kann ich den Wert auf index.php setzen/übergeben? – jason

+0

Was und warum versuchen wir diesen Wert zu senden? Das neueste Facebook sollte mit Tokens für uns umgehen? –

+0

Es ist das Token, das ich generiert habe. Das hat nichts mit Facebook zu tun. Wie kann ich diesen Wert an index.php übergeben? – jason

Verwandte Themen