2014-01-15 69 views
2

我正在開發一個網頁,我試圖通過PHP SDK登錄一個用戶。facebook登錄php沒有得到編號

我編寫了我的文件index.php,它位於facebook文件夾中,僅用於測試,位於我的域中。出於任何奇怪的原因,當我連接時,我會得到驗證碼,但我嘗試撥打$facebook -> getUser();並返回0!如果我嘗試使用$facebook-> getAccessToken();獲得令牌,它也會正確返回。

這裏是我設計的代碼。

代碼的第一部分,要求進行身份驗證,我重定向到一個callback.php文件,其中我嘗試獲取userId。下面是代碼:

Index.php

<?php 
require_once ('facebook.php'); 
$facebook = new Facebook($config); 
$facebook = new Facebook(array(
    'appId' => '378488665495077', 
    'secret' => 'XXXX', 
)); 
$login_url = $facebook->getLoginUrl(array('redirect_uri'=>"http://myweb.com/facebook/callback.php")); 
?> 
<a href="<?php echo $login_url;?>">Login with facebook</a> 

callback.php

require_once 'facebook.php'; 
$facebook = new Facebook(array(
    'appId' => '378488665495077', 
    'secret' => 'XXXXXX', 
)); 
$access_token = $facebook->getAccessToken(); 
$user_Id = $facebook->getUser(); 
$user_session = $facebook->getAccessToken(); 
echo $user_Id; 

我得到一個URL,看起來像:http://myweb.com/facebook/callback.php?code=AQjQ6 .....

有誰知道這個問題什麼?在我看來,似乎必須在http://developers.facebook.com中配置不好的東西,但我不知道是什麼。

回答

0

重定向時,當用戶登錄您的頁面時,會話正在被寫入瀏覽器。

  1. 確保您正在啓動會話,啓用cookie支持。
  2. 頁面刷新可能需要從瀏覽器中的會話中獲取信息。
  3. 因爲需要註銷方法,所以當用戶重定向回註銷頁面時,我使用php sdk清除創建的會話facebook,然後將用戶重定向到他們註銷的頁面。

例如:

//注:Facebook的用戶重定向回我的網站「到登錄頁面 」後,我重定向用戶返回到該頁面與它們展開。
這允許會話被創建,通過代碼隱藏 從URL。缺點是,它需要更長的時間,平均登錄可以在3到5秒內向上 以完成重定向。

session_start(); 
require './src/facebook.php'; 
$facebook = new Facebook(array(
    'appId' => 'your app id here', 
    'secret' => 'your app secret', 
    'cookie' => true, // enable optional cookie support 
)); 
try { 
$user = $facebook->getUser(); 
} catch (FacebookApiException $e) { 
//error_log($e); 
$user = null; 
} 
if($user){ 
    $access_token = $facebook->getAccessToken(); 
} 
$params = array(
    'redirect_uri' => 'Your redirect url', 
); 
$loginUrl = $facebook->getLoginUrl($params); 

$params = array(
'next' => 'Your redirect url' 
); 
$logoutUrl = $facebook->getLogoutUrl($params);