2011-05-27 67 views
1

所以Facebook已經改變了認證過程。再次。 PHP SDK中的示例是:現在我如何在Facebook的PHP SDK 3.0.0中進行身份驗證?

$user = $facebook->getUser(); 

if ($user) { 
    try { 
    $user_profile = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    $user = null; 
    } 
} 

但是,現在我們如何驗證尚未驗證的用戶呢?我們是否簡單地創建else聲明並調用$facebook->getLoginUrl()的結果?

而且,上面的例子給我一個錯誤,以$facebook->getUser()返回我的用戶ID的電話,但後來我的應用程序試圖調用$facebook->api('/me')給錯誤時翻倒:如何

Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user. thrown in /home/woohoobi/public_html/facebookv2/inc/facebook.php on line 560

任何援助驗證未認證的用戶會很好。

+0

你試過谷歌嗎?反正...檢查此鏈接http://wizardsoweb.com/simple-facebook-graph-api-iframe-application-full-code/2011/05/ – 2011-05-27 09:28:38

+2

該鏈接已過時,因爲它預先升級到v3 .0.0。 – 2011-05-27 18:53:07

回答

5

當你有$user沒有空

$user = $facebook->getUser(); 

並不意味着你有一個有效的訪問令牌,使一些API調用。它只是意味着用戶在登錄

要檢查,如果你有一個積極的訪問令牌,一個辦法就是儘量讓API調用,爲你在你的問題編寫的代碼:

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

$user = $facebook->getUser(); 

if ($user) { 
    // The user is logged in 
    try { 
    $user_profile = $facebook->api('/me'); 
    // Here : API call succeeded, you have a valid access token 
    } catch (FacebookApiException $e) { 
    // Here : API call failed, you don't have a valid access token 
    // you have to send him to $facebook->getLoginUrl() 
    $user = null; 
    } 
} // else : the user is not logged in 

因此,您有兩種情況需要將您的用戶發送至$facebook->getLoginUrl(),並且在這兩種情況下,我們製作了$user == null。所以,我們只需要添加:

<?php if ($user): ?> 
    <a href="<?php echo $facebook->getLogoutUrl() ?>">Logout of Facebook</a> 
<?php else: ?> 
    <a href="<?php echo $facebook->getLoginUrl() ?>">Login with Facebook</a> 
<?php endif ?> 

有關完整的流程,你可以看到the example of the Facebook PHP SDK這是有據可查的。

希望有所幫助。

+1

我不知道我有這麼遠,但登錄和註銷鏈接arent working for fo。我登錄到我的帳戶,並獲得一個代碼和狀態查詢字符串,但該應用程序沒有識別出我已登錄。不知道我缺少什麼 – qodeninja 2011-08-05 22:40:53

2

這幫了我很多!所以..用戶只需要先接受你的應用程序來使用userdata。

<body> 
<?php 

    if (!$user_id) 
    echo("<script> top.location.href='" . $facebook->getLoginUrl() . "'</script>"); 

?> 
相關問題