1

Я использую ssh и php sdk для входа в систему для входа в мое веб-приложение. С javascript у меня работает логин/выход, и я могу получить информацию о публичной facebook пользователя.Получите информацию о пользователе в facebook после входа в систему, используя facebook php sdk

Однако, когда я использую php, я не получаю информацию о лицевой панели пользователя. Чтобы предоставить вам некоторую информацию о приложении, когда я перехожу к определенной странице, содержащей форму, код проверяет, вошли ли они в систему. Если нет, им предоставляется ссылка LoginUrl. После входа в систему у меня есть $ user_id, так что теперь пользователь может использовать форму, но я не получаю их данные в facebook для сохранения в базе данных MySQL при отправке формы. Кто-нибудь есть советы, что я должен делать? У меня определенно есть $ user_id, поскольку форма отображается только в том случае, если у меня есть $ user_id.

я на основе моего кода на https://developers.facebook.com/docs/reference/php/facebook-api/

<?php 
require 'facebook.php'; 
//create application instance 
$config = array(
'appId' => '**************', 
'secret' => '****************************', 
'cookie' => true); 
$facebook = new Facebook($config); 
$user_id = $facebook->getUser(); 
?> 

//Page containing form 
<div data-role="page" id="postAJourney" data-add-back-btn="true" data-back-btn-text="back" data-rel="back" data-direction="reverse" data-transition="flip" data-theme="b" > 
    <div data-role="header" data-position="fixed"> 
     <h1>Post A Journey</h1> 
    </div> 

    <div data-role="content"> 
     <?php if ($user_id): ?> 
     <form action="add_journey.php" method="post" id="postAJourneyForm"> 
     <?php 
     try 
     { 
      $access_token = $facebook->getAccessToken(); 
     $param_token = array('access_token' => $access_token); 
     //Proceed knowing you have a logged in user who's authenticated. 
     $user_profile = $facebook->api('/me','GET',$param_token); 
     echo "Name: " . $user_profile['name']; 
     // store session data 
     $_SESSION['fb_id'] = $user_profile['id']; 
     $_SESSION['fb_name'] = $user_profile['name']; 
     $_SESSION['fb_first_name'] = $user_profile['first_name']; 
     $_SESSION['fb_last_name'] = $user_profile['last_name']; 
     $_SESSION['fbImg'] = "https://graph.facebook.com/".$user_profile['id']."/picture"; 
    $_SESSION['fbLink'] = "https://www.facebook.com/".$user_profile['name']; 
     } 
     catch(FacebookApiException $e) 
     { 
     // If the user is logged out, you can have a 
     // user ID even though the access token is invalid. 
     // In this case, we'll get an exception, so we'll 
     // just ask the user to login again here. 
     $login_url = $facebook->getLoginUrl(); 
     error_log($e->getType()); 
     error_log($e->getMessage()); 
     } 
     ?> 

     //jQuery Mobile Form would be here 

<?php else: ?> 
<?php // No user, print a link for the user to login 
$login_url = $facebook->getLoginUrl(array(
'scope' => 'email', 
'redirect_uri' => "http://localhost/share/#postAJourney" 
)); 
?> 
<div> 
    Login using OAuth 2.0 handled by the PHP SDK: 
    <a href="<?php echo $login_url; ?>">Login with Facebook</a> 
</div> 
<?php endif ?> 
+0

Не можете ли вы обратиться к API с идентификатором для деталей пользователя? – EaterOfCode

+0

См. Http://developers.facebook.com/docs/reference/rest/users.getInfo/ – EaterOfCode

+0

Сначала я использую getUser(), чтобы проверить, зарегистрирован ли пользователь, с помощью $ user_profile = $ facebook-> api (' /меня'); Я должен получить информацию о пользователе. REST устарел –

ответ

1

/* В том, что вам нужен доступ пользователей маркер затем передать этот маркер в Facebook/мне API в качестве параметра, то вы можете получить пользователь facebook авторизованы информации. вам необходимо передать область разрешений, которую вы хотите от пользователя в области. Для получения токена доступа пользователя вы можете использовать это: */

$ loginUrl = $ facebook-> getLoginUrl (array ('scope' => ' manage_pages ',' redirect_uri '=>' url '));

/* сделали OAuth URL и передать область в том, что, чтобы позволить пользователю странице присяги Facebook для разрешения Получить маркер доступа от Facebook переадресовать это даст вам в запросе */

$ access_token = $ facebook- > getAccessToken();

$ param_token = массив ('access_token' => $ access_token);

$ user_profile = $ facebook-> api ('/ me'); // Замените эту строку

$ user_profile = $ facebook-> api ('/ me', 'GET', $ param_token);

+0

Спасибо за помощь. Я обновил свой код, но никаких изменений. –

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