2011-11-26 83 views
2

可能重複:
Why is Facebook PHP SDK getUser always returning 0?Facebook的PHP-SDK的getUser()總是返回0

我使用新的PHP SDK創建一個非常簡單的應用程序。 當我嘗試$ facebook-> getUser()時,它總是返回0(聲稱我沒有登錄到FB,但我已經內部Facebook ..

它只適用於我登錄從Facebook的應用..任何想法如何解決這個問題?

感謝, 尤瓦

+0

如何登錄到您的應用程序? –

+0

您是否請求離線訪問權限以交互應用程序? – punit

+0

無論如何我必須這樣做嗎?在所有'如何做到'他們沒有提到我需要用戶的權限。此外,我是應用程序的開發人員..假設我不需要自己的權限.. – Yuvals

回答

1

如果的getUser()返回0比你的應用程序沒有被用戶觀看授予的權限。

即使如果你是該應用程序的開發者,那麼它會對你一視同仁,如果你的acco很難測試沒有表現特別。

就這樣說,這很容易。

如果getUser()返回0,則將用戶重定向到登錄URL。假設他們接受你,然後將能夠正確使用getUser()。

參見:​​一個很好的例子

1

這裏是我做了什麼..

呼叫的getUser(),如果結果爲0重定向到登錄URL或getLoginUrl()。一旦訪問該應用程序,它將具有GetUser的價值以及來自Facebook的簽名請求。

如果您的第一個計時器使用訪問getLoginUrl的應用程序將您帶到App權限請求,您必須接受它才能使用Facebook應用程序。

0

我仍然不確定爲什麼我每次調用$ facebook-> getUser()時服務器中的代碼都返回0,但是我找到了一個解決方法:當您創建Facebook對象時,將參數'cookie'設置爲真這樣的:

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


$userId = $facebook->getUser(); 

if(!empty($userId)) { 
    echo "This is the user id : " . $facebook->getUser(); 
} 

我在這裏發現了這個信息 https://github.com/facebook/php-sdk/issues/418#issuecomment-2705981

我希望這個信息是有用的,因爲我一直在尋找一種方法,使這項工作了一段時間。

+0

這不適合我。用戶ID始終爲零。 – dlopezgonzalez

1

解決方案:

了很多建議搞亂後,我發現答案是既簡單又愚蠢。 以下代碼中的「'」不是真正的單引號(或任何它們被稱爲)。取而代之的是使用「'」,這是不能識別的。

基本上'!='

原始代碼:

$config[‘appId’] = 'x0x2x1x9xx3x98x'; 
$config[‘secret’] = 'xxx79xf7x6xxx5xxxfxxxc5bx46xfxxx'; 
$config[‘fileUpload’] = false; // optional 

固定的代碼:

$config['appId'] = 'x0x2x1x9xx3x98x'; 
$config['secret'] = 'xxx79xf7x6xxx5xxxfxxxc5bx46xfxxx'; 
$config['fileUpload'] = false; // optional 

我所做的只是替換‘‘‘和’’’,這使我的文本編輯器來識別名稱作爲引用的字符串。我上傳了它,它工作!我認爲這是一個編碼問題,改變了角色,這是有道理的。這意味着FB團隊最初編寫的代碼很好,但是人們遇到了有效的問題。