2012-11-14 77 views
0

我遇到了Facebook PHP API的問題。這裏是我的代碼:

<?php 
$facebook = new Facebook(array(
    'appId' => 'MY_APP_ID', 
    'secret' => 'MY_SECRET' 
)); 

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

if (!$uid) { 
    $login_url = $facebook->getLoginUrl(array( 
     'next' => 'http://www/mywebsite.com', 
     'redirect_uri' => 'http://www/mywebsite.com', 
     'scope' => 'email,publish_stream,user_birthday,user_location' 
    )); 

    echo '<a href="'.$login_url.'">TEST TO CONNECT</a>'; 
} else { 
    print_r($user); 
} 

我一直有線TEST TO CONNECT,所以它看起來像$ facebook-> getUser();總是返回0.任何想法?

謝謝您的幫助

+0

而不是「if(!$ uid)」你可以使用「其他」...只是一個提示 – luschn

回答

0

如果這是你完整的代碼,然後有一個主要的問題:你不包括開頭Facebook類:

include 'Facebook.php'; 

另外,還要確保你的App ID和App Secret是正確的。並使用「publish_actions」而不是「publish_stream」。

如果這沒有幫助,調試。 Facebook通常會告訴你什麼是錯的。

+0

我想出來。 xmlns:fb =「http://www.facebook.com/2008/fbml」不見了:) 感謝您的幫助 –

+0

使用php進行登錄,命名空間應該是無關緊要的......同樣,正確的命名空間是這一個現在: – luschn

1

你能看到任何錯誤嗎?你是否被帶到登錄頁面並返回?或者一切都好嗎?

您的代碼中的錯誤似乎在部分if (!$uid)然後您生成登錄網址。

我真的不知道'next' => 'http://www/mywebsite.com',在那裏做什麼。

嘗試使用這樣的:

$loginUrl = $facebook->getLoginUrl(
       array(
        'scope'   => 'publish_stream,read_friendlists,user_photos', 
        'redirect_uri' => $redirecturi 
       ) 
      ); 

而且也不要忘記包括Facebook的PHP SDK文件。

require_once("facebook.php");//or full location if the file is placed elsewhere.

0

我遇到了類似的問題。我在互聯網上搜索,訪問博客,論壇,但一切都是徒勞的。所以,我決定使用Facebook的JS SDK而不是PHP SDK。當我這樣做時,JS SDK擴展了登錄過程,說我的帳戶是從其他瀏覽器訪問的。這個擴展顯示沒有從php sdk端出現。我以爲我應該恢復並嘗試再次使用PHP SDK ...並且它運作正常。

所以基本上它不是你的代碼的錯誤,而是fb的登錄過程引起這個錯誤。你有兩個選擇:i)要麼你的朋友參加測試登錄ii)使用js sdk