簡體   English   中英

Facebook SDK-PHP-調用getUser()時始終返回0

[英]Facebook SDK-PHP - Always returns 0 when calling getUser()

每當我調用getUser()方法時,PHP Facebook-SDK都會為我返回0。 我正在尋找不使用JS的解決方案。 那是我到目前為止所擁有的。

$user = null;
    $facebook = new Facebook(array(
            'appId'  => '140739xxxx46068',
            'secret' => '46dff7362e86xxxxx06fe9050a86a22',
            'cookie' => true,
    ));

    // Get User ID
    $login = $facebook->getLoginUrl(array("scope" => "publish_stream,manage_pages"));
    $user = $facebook->getUser();

    echo $facebook->getUser()."//".$facebook->getAccessToken();

    if ($user <> '0' && $user <> '')
    {
        try {
            //header("location:".$login);
        }
        catch (FacebookApiException $e)
        {
            echo $e->getType();
            echo $e->getMessage();

        }

想一想。 您要將loginURL保存到$login var中,然后嘗試檢索用戶數據。

那永遠都行不通。 您沒有提示用戶使用登錄URL,因此他未授予訪問權限。 用戶需要手動訪問URL並確認權限。 之后,您也許可以檢索用戶數據。

讓我們總結一下:

  1. 初始化Facebook SDK
  2. 檢查用戶是否已經被允許訪問( getUser()要求)
  3. 如果是,請照常進行。 您的用戶已授予訪問權限。
  4. 如果不是( getUser()為0),則告訴用戶訪問通過getLoginUrl()獲得的URL。
  5. 請確保您包括redirect_uri數組您在傳遞關鍵4.你可以,因為我們正在檢查我們是否檢索用戶數據或提示用戶登錄重定向到同一個URI
  6. 允許(或不允許)訪問后,您的用戶將從Facebook redirect_uri到您的redirect_uri
  7. 如果在請求訪問時一切正常,那么您應該進入步驟3

您的邏輯缺陷是,您認為getLoginURL()自動授予您對用戶數據的訪問權限。 但這不是真的,您需要用戶訪問該URL,以便他們可以自己授予訪問權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM