2012-01-03 102 views
2

我一直坐着整夜試圖弄清楚如何通過Facebook API授權用戶,以獲得他們的用戶ID。 我已經嘗試了幾乎所有來自S/O,5頁「Google指南」和Facebook開發人員指南的技巧和想法,但似乎沒有任何適用於我的東西!如果有人願意這麼做,並且一步一步地指導如何讓這個工作成功!從Facebook獲取ID PHP SDK

Open Graph是必須的嗎?我也嘗試過,沒有和它一起工作。我已經有我的應用程序(也許不是正確的設置嗎?)和PHP SDK

$uid = $facebook->getUser();等沒有給我任何幫助都沒有。)

提前感謝!

這段代碼例如不起作用,我在S/O上找到它,他說這對他來說是完美無缺的工作!

<?php 
require_once 'facebook.php'; 
$facebook = new Facebook(array(
    'appId' => '########', 
    'secret' => '##########################', 
    'cookie' => true, 
)); 

$req_perms = "publish_stream,offline_access,user_status,email,read_stream"; 
$session = $facebook->getSession(); 
$loginUrl = $facebook->getLoginUrl(array('canvas'=> 1,'fbconnect' => 0,'req_perms' => $req_perms)); 
$user_info = null; 
if (!$session) 
    { echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";exit;} 
else{ 
    try { $user_info = $facebook->api('/me'); } 
    catch (FacebookApiException $e) 
     { echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>"; exit;} 
    } 
?> 
<!doctype html> 
<html> 
<head> 
</head> 
<body> 
<?php 
$user_name=$user_info['name']; 
echo "Hi $user_name ! Your Facebook ID is: ".$user_info['id']."<br/>"; 
echo "Hi $user_name ! Your E-mail Address is: ".$user_info['email']."<br/>"; 
echo "Thanks for accepting our application."; 
//print_r($user_info); 
?> 
</body> 
</html> 

編輯:感謝所有的快速反應,我終於得到它的工作!我是在正確的軌道上一直..

步驟1:做一個鏈接這樣

https://www.facebook.com/dialog/oauth? 
client_id=YOUR_APP_ID&redirect_uri=YOUR_URL 

這與授權的Facebook應用程序,這是需要第二步用戶。

第2步:執行此代碼段。

require_once('facebook.php'); 

$fb_app_id = "APP_ID"; 
$fb_secret = "APP_SECRET"; 
$fb_app_url = "APP_URL"; 
$facebook = new Facebook(array(
    'appId' => $fb_app_id, 
    'secret' => $fb_secret, 
    'cookie' => true, 
)); 

$facebook_login_url = $facebook->getLoginUrl(array(
    'canvas' => 1, 
    'fbconnect' => 0, 
    'scope' => 'publish_stream,user_photos', 
    'redirect_uri' => $fb_app_url 
)); 

$facebook_user_id = $facebook->getUser(); 

謝謝@KevinCogill和提示@JuicyScripter

+0

你能告訴我們你現在使用的代碼嗎? – nav 2012-01-03 20:52:43

+0

哇,我試了這麼多,讓我看看我能否找到最簡單的那個。現在添加代碼片段! – 2012-01-03 20:56:19

+0

你在哪裏以及如何使用「步驟1」中創建的鏈接?該代碼是否仍然有效以驗證用戶身份? – 2012-06-14 20:14:51

回答

2
require_once('facebook/facebook.php'); 

$facebook = new Facebook(array(
    'appId' => $fb_app_id, 
    'secret' => $fb_secret, 
    'cookie' => true, 
)); 

$facebook_login_url = $facebook->getLoginUrl(array(
    'canvas' => 1, 
    'fbconnect' => 0, 
    'scope' => 'publish_stream,user_photos', 
    'redirect_uri' => $fb_app_url 
)); 

$facebook_user_id = $facebook->getUser(); 
+1

'$ facebook_user_id'將會是空的,直到用戶第一次訪問'$ facebook_login_url'。 – 2012-01-03 21:31:10

+0

這個代碼片段可以完成所有工作嗎?我設置應用程序ID變量後? – 2012-01-03 21:33:16

+0

它只是返回0,這可能是什麼原因?我昨天也得到了這個結果很多次。 – 2012-01-03 21:49:15

3

的Facebook已經這樣做是爲了你:

您必須閱讀Authenticationexamples

更新(更新上的代碼示例說明):
您使用getSession這是不是真的存在於最新Facebook PHP-SDK版本和req_perms現在稱爲scope。您是否閱讀Facebook文檔或其他地方發佈的教程? Facebook經常改變一些東西,你在其他來源找到的大部分教程都會過時很快。更好地從官方來源獲取信息(即使它不是最大的質量)