2012-12-24 40 views
1

我在使用下面的代碼進行身份驗證時遇到了一些麻煩。使用PHP和jQuery對Facebook進行身份驗證

我有一個產生,爲用戶登錄/驗證在Facebook上應用的過程loginUrl頁:

<?php 
    $loginUrl = $facebook->getLoginUrl(array('scope' => 'publish_stream, read_friendlists, user_birthday', 'redirect_uri' => 'complete.php')); 
?> 
<div id="connect_facebook"> 
    <a class="button" href="<?php echo $loginUrl; ?>">Connect to Facebook</a> 
</div> 

而且我complete.php有一個腳本,執行以下操作:

<script> 
$(document).ready(function() { 
    pop_db(); 
}); 

function pop_db() { 
    $.post(
     "pop_db.php", 
     function(data) { 
      alert(data); 
     } 
    ); 
} 
</script> 

而且我pop_db.php文件看起來像:

<?php 
require_once('constants.php'); 

$response = array(); 

$user = $facebook->getUser(); 

if($user) { 
    try { 
     // make API calls 
     $response['code'] = "success"; 
    } catch (FacebookApiException $e) { 
     error_log($e); 
     $user = null; 
    } 
} else { 
    $response['code'] = "failure"; 
    $response['userID'] = $facebook->getUser(); 
    $response['access_token'] = $facebook->getAccessToken(); 
} 

echo json_encode($response); 

>

和constants.php有我的Facebook對象的祕密信息(它也創建了$ facebook對象)。

我的問題是,當我使用「complete.php」作爲重定向並嘗試使用此jQuery執行API調用異步時,我得到一個響應,userID = 0(表示用戶未記錄在),但它似乎我得到一個有效的訪問令牌。當我使用「pop_db.php」作爲我的重定向而不是「complete.php」,因此不使用任何異步調用時,一切正常。

我錯過了什麼嗎?它爲什麼一直告訴我用戶沒有登錄?

任何建議,非常感謝。

+0

我不是100%確定,但'redirect_uri'應該是絕對網址。 –

回答

0

誰會遇到問題登錄他們自己的網站徹底facebook /整合facebook登錄到他們的網站只需按照給定的鏈接「http://developers.facebook.com/docs/howtos/login/server-side-login/ #step2「。它是一個非常好的鏈接,可以很好地解決你的問題。

謝謝。 banalata。

相關問題