我在使用下面的代碼進行身份驗證時遇到了一些麻煩。使用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」,因此不使用任何異步調用時,一切正常。
我錯過了什麼嗎?它爲什麼一直告訴我用戶沒有登錄?
任何建議,非常感謝。
我不是100%確定,但'redirect_uri'應該是絕對網址。 –