簡體   English   中英

使用facebook php sdk登錄后獲取用戶的facebook信息

[英]Get user's facebook info after login using facebook php sdk

我正在使用Facebook javascript sdk和php sdk將用戶登錄到我的Web應用程序。 使用javascript,我可以執行登錄/注銷操作,並且可以獲得登錄用戶的公共Facebook詳細信息。

但是,使用php時,我沒有獲得用戶的facebook詳細信息。 為了向您提供有關該應用程序的一些信息,當我導航到包含表單的某個頁面時,代碼將檢查以查看其是否已登錄。 登錄后,我有了$ 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 ?>

/ *因為您需要用戶訪問令牌,然后將該令牌傳遞到Facebook / me API中作為參數,然后才能獲取Facebook用戶登錄信息。 您需要通過范圍中的用戶傳遞所需的權限范圍。要檢索用戶訪問令牌,可以這樣使用* /

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

/ *制作oauth url並傳遞范圍,以允許用戶進入Facebook宣誓頁面以獲取許可。從facebook重定向獲取訪問令牌,它將在請求中給您* /

$ access_token = $ facebook-> getAccessToken();

$ param_token = array('access_token'=> $ access_token);

$ user_profile = $ facebook-> api('/ me'); //用該行替換

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM