2016-05-03 2 views
5

Я использую PHP PHP SDK и пытаюсь отправить токен-идентификатор с одной страницы на другую. Я использую этот код - http://www.krizna.com/demo/login-with-facebook-using-php/. Я используюКак передать значение FacebookRedirectLoginHelper в 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

URL-адрес, который вы указываете FacebookRedirectLoginHelper - это URL-адрес, с которого перенаправляется facebook, они будут лишать любую строку запроса. Я уверен. Почему fbconfig нужен токен? И я уверен, что это возможно с $ _SESSION –

+0

Я пробовал с $ _SESSION, но он всегда равен нулю. Как я могу использовать его? – jason

+0

Привет, Джейсон. Я просто посмотрю на некоторые из моих кодов для этого, надеюсь, вы получите ответ. –

ответ

2

Вы не должны пытаться передавать токен доступа Facebook через строку запроса/$_GET[] superglobal. То, что вы должны использовать, - это то, что рекомендует facebook, что является superslobal $_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

Заменена сессия с помощью файлов cookie. – jason

1

Этот ответ использует V5.1.2 Facebook PHP SDK, и заимствована из метода я, работающих в мои собственные проекты. Он также предполагает, что используется автозагрузка композитора.

Войти Страницу

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

Надеется, что дает вам руку. Я не сомневаюсь, что мой код был адаптирован из предыдущих ответов или учебников StackOverflow.

+0

Я попытался отправить значение из fbconfig.php в index.php по сеансу и получить значение, но в обоих случаях оно равно нулю. Как установить/передать значение index.php? – jason

+0

Что и почему мы пытаемся отправить это значение? Последний Facebook должен иметь дело с токенами для нас? –

+0

Это токен, который я создал. Это не имеет никакого отношения к facebook. Как передать это значение index.php? – jason

Смежные вопросы