2012-02-06 160 views
0

全部, 我正在使用wordpress並試圖讓我的用戶用facebook登錄。在我的header.php WordPress的,我有以下代碼:Facebook PHP SDK不允許登錄用戶

define('123', '123'); 

//uses the PHP SDK. Download from https://github.com/facebook/php-sdk 
require 'facebook.php'; 

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

$uid = $facebook->getUser(); 
if ($uid) { 
    try { 
     $userInfo = $facebook->api('/' + $uid); 
     $qry = "Select user_id, role from event_details where email_address='$userInfo[email]'"; 
     echo $qry; 
     $result = mysql_query($qry); 
     $resultrows = mysql_num_rows($result); 
     if($resultrows>0){ 
      $resultset = mysql_fetch_array($result); 
      $_SESSION['user_id'] = $resultset['user_id']; 
      $_SESSION['role'] = $resultset['role']; 
      $target = "http://www.website.com/event_choices"; 
      header("Location:". $target); 
     } 
    } catch (FacebookApiException $e) { 
     error_log($e); 
    } 
}else{ 
    echo "not logged into facebook"; 
} 

if ($uid) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
} else { 
    $loginUrl = $facebook->getLoginUrl(array(
    'next'=>'http://www.website.com/event_choices' 
    )); 
} 

然後當我在WordPress的實際創建一個頁面,我有以下代碼:

<?php if ($uid): ?> 
<?php echo "Welcome, ".$uid['first_name']. ".<br />"; ?> 
<a href="<?php echo $logoutUrl; ?>"> 
    <img src="http://static.ak.fbcdn.net/rsrc.php/z2Y31/hash/cxrz4k7j.gif"> 
</a> 
<?php else: ?> 
    <a href="<?php echo $loginUrl; ?>"> 
    <img src="http://static.ak.fbcdn.net/rsrc.php/zB6N8/hash/4li2k73z.gif"> 
    </a> 
<?php endif ?> 

這顯示登錄按鈕,但每當我點擊按鈕什麼都沒有發生。當我查看源代碼時,$ loginUrl沒有被填充。我究竟做錯了什麼?

謝謝!

回答

0

您在生成登錄URL時未傳遞範圍,這是傳遞所有應用程序權限的地方。請看:

$loginUrl = $facebook->getLoginUrl(
    array(
     'scope'   => 'email,offline_access,publish_stream,user_birthday,user_location,user_work_history,user_about_me,user_hometown', 
     'redirect_uri' => 'http://www.website.com/event_choices' 
    ) 
); 

欲瞭解更多信息看一看的API參考here

此外,在使用Facebook時,有時從FB獲得一些輸出以查看可能存在的問題很重要。你可以通過包裝你的代碼這樣做:

try { 
    $user = $facebook->getUser(); 
    //you can also put your loginURL generation code here to see if you get an error 
} catch(Exception $o){ 
    print_r($o); 
}