2016-05-03 5 views
5

में मूल्य कैसे पास कर सकता हूं मैं फेसबुक PHP एसडीके का उपयोग करता हूं और टोकन-आईडी को एक पृष्ठ से दूसरे पृष्ठ पर भेजने की कोशिश करता हूं। मैं इस कोड का उपयोग करता हूं - http://www.krizna.com/demo/login-with-facebook-using-php/। मैं का उपयोगमैं PHPReirectLoginHelper को PHP

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

मैं इस तरह मूल्य भेज कोशिश की है:

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

लेकिन मैं जब मैं कोशिश fbconfig.php फ़ाइल में मूल्य नहीं मिलता है:

$value = $_GET['value']; 

मैं भी इस्तेमाल किया है मूल्य भेजने के लिए सत्र लेकिन यह काम नहीं करता है। मैं FacebookRedirectLoginHelper (fbconfig.php) पर मूल्य कैसे भेज सकता हूं?

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

यूआरएल जो आप फेसबुक रीडायरेक्ट लॉजिइनहेल्पर देते हैं वह यूआरएल है जो फेसबुक वापस रीडायरेक्ट करता है, वे निश्चित रूप से किसी भी क्वेरी स्ट्रिंग को निकाल देंगे। Fbconfig टोकन की आवश्यकता क्यों है? और मुझे यकीन है कि $ _SESSION –

+0

के साथ यह संभव है मैंने $ _SESSION के साथ प्रयास किया लेकिन यह हमेशा शून्य है। मुझे इसे कैसे प्रयोग में लाना है ? – jason

+0

हाय जेसन। मैं बस इसके लिए अपने कुछ कोड पर एक नज़र डाल रहा हूं, मैं आशा करता हूं कि आपको एक उत्तर लिखा होगा। –

उत्तर

2

आपको क्वेरी स्ट्रिंग/$_GET[] सुपरग्लोबल के माध्यम से फेसबुक एक्सेस टोकन पास करने का प्रयास नहीं करना चाहिए। आपको क्या उपयोग करना चाहिए फेसबुक की सिफारिश की जाती है, जो $_SESSION[] सुपरग्लोबल है।

चूंकि आप एक पृष्ठ से दूसरे पृष्ठ तक पहुंच टोकन पास करने का प्रयास कर रहे हैं, तो पहले पृष्ठ $access_token पर पहुंच टोकन को कॉल करने दें। यह एक पृष्ठ पर पारित करने के लिए निम्न करें:

पेज 1:

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

पेज 2:

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

यही कारण है, काम करना चाहिए मुझे पता है कि वह आपके लिए काम करता है ।

+0

कुकीज़ के साथ बदला सत्र। – jason

1

इस उत्तर फेसबुक पीएचपी एसडीके v5.1.2 उपयोग कर रहा है, और विधि मैं में काम कर रहा है से अनुकूलित है मेरी अपनी परियोजनाएं यह भी मानता है कि संगीतकार ऑटोलोडिंग का उपयोग किया जा रहा है।

लॉगिन पृष्ठ

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 (या जो भी आप अपने रीडायरेक्ट पृष्ठ होना चाहता हूँ)

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()); 
} 

उम्मीद है कि है कि आप एक हाथ देता है। मुझे संदेह नहीं है कि मेरा कोड पिछले स्टैक ओवरफ्लो उत्तर या ट्यूटोरियल्स से अनुकूलित किया गया है।

+0

मैंने सत्र द्वारा fbconfig.php से index.php पर मूल्य भेजने और मूल्य प्राप्त करने का प्रयास किया है लेकिन यह दोनों मामलों में शून्य है। मैं index.php पर मान कैसे सेट/पास कर सकता हूं? – jason

+0

हम उस मूल्य को भेजने का प्रयास क्यों कर रहे हैं? नवीनतम फेसबुक को हमारे लिए टोकन से निपटना चाहिए? –

+0

यह टोकन जो मैंने उत्पन्न किया है। फेसबुक के साथ इसका कोई लेना-देना नहीं है। मैं index.php पर उस मान को कैसे पास कर सकता हूं? – jason