2012-07-13 52 views
4

我有一個我的網站的Facebook登錄腳本,目前正常工作。我想添加從用戶請求電子郵件的功能,以及當前的基本信息。我知道我需要請求一個訪問令牌,但icant很明白如何。這裏是我當前的代碼:Facebook請求訪問令牌並獲取電子郵件

$facebook = new Facebook(array(
      'appId' => APP_ID, 
      'secret' => APP_SECRET, 
      'cookie' => true 
     )); 
$session = $facebook->getSession(); 

if (!empty($session)) { 
    # Active session, let's try getting the user id (getUser()) and user info (api->('/me')) 
    try { 
     $uid = $facebook->getUser(); 


     $user = $facebook->api('/me/'); 

回答

1

看一看在server-side authentication process - 這就是你通過你想要的權限(稱爲「範圍」)。如果用戶尚未登錄,那麼將向用戶顯示一個登錄面板,然後再爲其提供一個單獨的權限面板,用於獲取基本以上的任何權限並且他們尚未授予權限。然後,您將收到一個授權令牌或可交換爲令牌的代碼,然後您可以使用此令牌進一步查詢用戶,並在回覆中獲取他們的電子郵件詳細信息。

祝你好運!

3
You have to provide an extended permission for email at the time of login.. 
$access_token = $this->facebook->getAccessToken(); 
     //check permissions list 
     $permissions_list = $this->facebook->api('/me/permissions', 'GET', array('access_token' => $access_token)); 
     $permissions_needed = array('email'); 
     foreach ($permissions_needed as $perm) { 
      if (!isset($permissions_list['data'][0][$perm]) || $permissions_list['data'][0][$perm] != 1) { 
       $login = $facebook->getLoginUrl(array('scope' => 'email,user_birthday', 
       'redirect_uri' => your site redirectUri, 
       'display' => 'popup' 
      )); 
       header("location:$login"); 
      } 
     } 
     $user = $facebook->getUser(); 
     if ($user) { 
      try { 
       $userInfo = $facebook->api("/$user"); 
      } catch (FacebookApiException $e) { 
       echo $e->getMessage(); 
      } 
     } 
     print_r($userInfo); 
+0

在javascript中這樣做的方式是什麼?我需要特別是$ userInfo = $ facebook-> api(「/ $ user」)的調用,我已經有其餘的工作在js中正常工作... – 2014-10-29 11:42:54

+0

FB.api('/ me',function(response){ alert(response.name); //響應是基本的用戶對象 }); – 2014-10-30 13:50:07