2011-08-13 24 views
0

我目前正在學習PHP,並且我希望開始整合Facebook基本元素(如朋友列表等),以便完成比構建網店更有趣的事情。但是,我已經按照Facebook上的指南並添加了一個應用程序,並且我獲得了展示我想要的內容的畫布,但是如何開始從Facebook獲取數據?我已經下載了這個https://github.com/facebook/php-sdk#readme,我將它添加到了我的項目中。在PHP中使用Facebook API

例如,我將如何要求權限,從我自己的配置文件中提取數據?我需要解析JSON嗎? PHP SDK的API在哪裏?這http://developers.facebook.com/docs/reference/api/不像這裏獲得用戶ID部分:

require 'php-sdk/src/facebook.php'; 

$facebook = new Facebook(array(
    'appId' => 'YOUR_APP_ID', 
    'secret' => 'YOUR_APP_SECRET', 
)); 

// Get User ID 
$user = $facebook->getUser(); 

在正確的方向的任何點將被高度讚賞。

+0

相關:http://stackoverflow.com/questions/6960376/incorporating-facebook-login -using-facebook-php-sdk-v-3-0-0-with-sessions-and –

回答

1

沒有必要解析JSON,你會去這樣做的API請求:

try { 
    $user_profile = $facebook->api('/me'); 
} catch (FacebookApiException $fbException) { 
    die('Houston, we got problems.'); 
    return; 
} 

這將使你要麼包含以前你所要求的權限爲每一個元素的$ user_profile (如first_name等),放入一個關聯數組(在這種情況下爲$user_profile)。 顯然,您首先必須檢查getUser()的成功或失敗(如果它返回0,則失敗),因爲API調用的行爲與您以其他方式註銷相同。

+0

在這個鏈接:http://developers.facebook.com/docs/reference/api/如果你看第一個例子:「名稱」,「類型」,「網站」...是關聯數組中的鍵嗎? – LuckyLuke

+0

好的,但是這意味着你正在請求一個頁面。對於實際的用戶信息(例如提供的示例),您將得到如下所示的內容:https://graph.facebook.com/btaylor(請注意,如果您通過API等登錄,信息會有所不同) –

+0

Okey ,但它說它返回一個關聯數組呢?你在看哪個API?我應該怎麼知道? – LuckyLuke

0

你看過PHP SDK附帶的example.php嗎?它演示瞭如何使用圖形API進行登錄並獲取一些基本數據。爲了使對話框出現在你的應用程序的權限和檢索訪問令牌給定用戶,你可以做這樣的事情:

$app_id = "..."; 
$app_secret = "..."; 
$my_url = "..."; 

//session_start(); 

@$code = $_REQUEST["code"]; 

if(empty($code)){ 
    $dialog_url = 
      "http://www.facebook.com/dialog/oauth?client_id=" 
      . $app_id . "&redirect_uri=" . urlencode($my_url) . "&state=" 
      . $_SESSION['state'] 
      . "&scope=email,user_birthday,user_hometown,user_interests,user_location,user_online_presence,user_photos,user_status,publish_stream"; // Scope defines permissions 

    echo("<script> top.location.href='" . $dialog_url . "'</script>"); // Redirect 
} 

$token_url = "https://graph.facebook.com/oauth/access_token?" 
     . "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url) 
     . "&client_secret=" . $app_secret . "&code=" . $code; 

$response = file_get_contents($token_url); 
$params = null; 
parse_str($response, $params); 

$graph_url = "https://graph.facebook.com/me?access_token=" . $params['access_token']; 

$testuser = json_decode(file_get_contents($graph_url)); 

if($testuser != null){ 
    // Do stuff 
+0

這個例子是完全沒有生產力的。 PHP SDK 3.0.1通過使用getLoginUrl()和getLogoutUrl()提供了一個更好的方法。官方的方式也比較安全,因爲它實現了使用CSRF令牌。 –

+0

是的,我知道這段代碼有點過時了。因此,引用了最新SDK提供的示例。它確實演示瞭如何獲得權限對話框並訪問屬性。如果您知道如何在Facebook應用程序的上下文中自動觸發'getLoginUrl()',那麼將非常受歡迎。 –

+1

這將是使用getLoginUrl提升權限的等效代碼:$ loginUrl = $ facebook-> getLoginUrl(array('scope'=>'email,user_birthday,user_hometown,user_interests,user_location,user_online_presence,user_photos,user_status,publish_stream' ));' –