2014-01-24 53 views
2

我目前在我的Codeigniter應用程序中使用下面的代碼來從應用程序用戶獲取Facebook數據。Facebook用戶通過新SDK擴展權限

<?php 


require_once('facebook-php-sdk/src/facebook.php'); 
// Create our Application instance (replace this with your appId and secret). 
$facebook= new Facebook(array(
    'appId' => '2453463636', 
     'secret' => '365653656565656', 
     'allowSignedRequest' => false, 
)); 

$_REQUEST += $_GET; 
$user = $facebook->getUser(); 

if ($user) { 
    try { 
    // Get the user profile data you have permission to view 
    // $user_profile = $facebook->api('/me'); 
    $user_profile = $facebook->api('/me?fields=picture.width(100).height(100),first_name,last_name,username,email'); 
    echo $user_profile['email']; 
    echo $user_profile['username']; 

    } catch (FacebookApiException $e) { 
    $user = null; 
    } 
} else { 
    die('<script>top.location.href="'.$facebook->getLoginUrl().'";</script>'); 
} 

?> 

這工作在連接罰款,並返回迴盪在頁面上的用戶的username,但是電子郵件無法正常工作。電子郵件返回顯示爲「未定義索引:電子郵件」視圖中的錯誤。

我幾天前使用這個非常相同的東西來獲取電子郵件,它的工作,但是這是在本地主機。它在localhost上得到的電子郵件很好,當被推送到服務器時,它不識別email,但它確實識別並獲得username

爲什麼郵件不被識別?

我使用的是最新版本的SDK:Facebook的PHP SDK(v.3.2.3)

回答

1

你不能用這個選擇呢。您需要Facebook的延伸許可。檢查此鏈接瞭解詳情:

http://developers.facebook.com/docs/authentication/permissions/

Facebook並沒有未經允許共享用戶的電子郵件。

+0

+1指向「Facebook未經他們許可不共享用戶電子郵件」 –

+0

@KiranRS但是哪裏以及如何?你能提供代碼聲明嗎? – Tester