1

在我說我想說的東西,我GOOGLEd了很多,有很多頁面找到(包括許多這樣的問題)與各種解決方案......但我已經嘗試過他們每一個,但不幸的是他們都沒有爲我工作

與facebook-php-sdk我想登錄一個用戶。 最初幾次它工作得很好(2到3天前)。今天,當我開始再次與我的項目工作,它不再工作。每當我嘗試登錄用戶$facebook->getUser() is returning 0。但3天后它工作。

我已經使用這裏給出:: developers.facebook.com代碼,是的,我已經做了一些修改那些在下面

我的代碼:: 0auth_provided_by_facebook.php

include_once $_SERVER['DOCUMENT_ROOT'].'dist/facebook-php-sdk/src/facebook.php'; 

$config = array(
    'appId' => '***********', 
    'secret' => '*********', 
    'allowSignedRequest' => false, // optional but should be set to false for non-canvas apps 
'cookie' => true, 
'oauth'  => true 
); 

$facebook = new Facebook($config); 
$user_id = $facebook->getUser(); 
if($user_id) { 
    try { 

     $user_profile = $facebook->api('/me','GET'); 

    } catch(FacebookApiException $e) { 
    $login_url = $facebook->getLoginUrl(array(
    scope'=>'email,user_location,user_photos,publish_actions,publish_stream,basic_info', 
    'redirect_uri' => 'http://localhost/dist/include/0auth_provided_by_facebook.php' 
    )); 
    echo '<a href="' . $login_url .'"> PLEASE CLICK HERE </a>'; 
    error_log($e->getType()); 
    error_log($e->getMessage()); 
    } 
} else { 

    $login_url = $facebook->getLoginUrl(array(
    'scope'  => 'email,user_location,user_photos,publish_actions,publish_stream,basic_info', 
    'redirect_uri' => 'http://localhost/dist/include/0auth_provided_by_facebook.php' 
    )); 
    echo '<a href="' . $login_url .'"> PLEASE CLICK HERE </a>'; 

} 

OUTPUT給出完整的代碼:getUser()總是返回0.


我的登錄過程如下工作如何描述:點擊<a href="login_fb">Login using fb </a>控制後

去我localhost/dist/index.php現在我的index.php include上述wriiten代碼是在不同的目錄localhost/dist/include/0auth_provided_by_facebook.php從這個文件我處理一切。在成功登錄Facebook的回報價值的失敗here.and然後在成功登錄的用戶再次重定向到家裏


現在,這裏是我的應用程序設置的,他完整列表,我啓用或禁用或更改

1. App Domains : blank(according to the answer) 
2. Site URL : `http://localhost/dist/include/0auth_provided_by_facebook.php?` 
3. Native or desktop app? Disabled 
4. Deauthorize Callback URL : `http://localhost/dist/include/0auth_provided_by_facebook.php?` 
5. Social Discovery : enabled 
6. Client OAuth Login : enabled 
7. Embedded browser OAuth Login :enabled 
8. App Secret Proof for Server API calls :enabled 
9. Require 2-factor reauthorization : disabled 
10. Valid OAuth redirect URIs :`http://localhost/dist/include/0auth_provided_by_facebook.php?` (according to the suggesion given in the answer) 
11. Stream post URL security : enabled 

這些是細節。在所有情況下,$user_id = $facebook-> getUser();總是返回0。我該如何解決它?


更多信息.. thhough我不知道它會幫你不要......我正在經歷我base_facebook.php,我發現,這是因爲 if(signed_request)回到零點永遠是假的。

+0

替換現有getCode()功能爲什麼你有與該網站的DEAUTH回調相同的目標? –

+0

用戶是否授權您的應用程序?流量是否發生,仍然得到用戶ID 0?那是對的嗎?這是你的問題嗎? –

+0

是用戶授權應用......它在developers.facebook.com角色被提及....和 >還是你的用戶ID爲0?那是對的嗎? 是這就是我的問題 –

回答

0

爲了擺脫這個問題,你需要做以下

變化

$login_url = $facebook->getLoginUrl(array(
    'scope'  => 'email,user_location,user_photos,publish_actions,basic_info', 
    'redirect_uri' => 'http://localhost/dist/' 
    )); 

$login_url = $facebook->getLoginUrl(array(
    'scope'  => 'email,user_location,user_photos,publish_actions,basic_info', 
    'redirect_uri' => 'http://localhost/dist/index.php' 
    )); 

休假域名在以下設置的空白。不要給本地主機。COM

App Domains : localhost.com 

然後

Valid OAuth redirect URIs :http://localhost/dist/ 

Valid OAuth redirect URIs :`http://localhost/dist/index.php 

後,現在嘗試在那裏。

+0

你可以再次檢查ITR please..not工作 –

0

變化從應用程序配置您的應用程序的祕密page.then使用上述頁面這個新的應用程序祕密你有mentioned.Delete都在瀏覽器中的Cookie,並嘗試加載頁面,你會得到正確的響應。

0

對我來說這聽起來本地主機的問題,如果你可以使用域來測試你的代碼,我在我的網站上運行的一個頁面登錄系統,我可以給你所有的代碼怎麼過你的代碼看起來不錯。

0

編輯base_facebook.php庫,並與

protected function getCode() { 
$server_info = array_merge($_GET, $_POST, $_COOKIE); 
    if (isset($server_info['code'])) { 
     if ($this->state !== null && isset($server_info['state']) && $this->state === $server_info['state']) { 
      $this->state = null; 
      $this->clearPersistentData('state'); 
      return $server_info['code']; 
     } else { 
      self::errorLog('CSRF state token does not match one provided.'); 
      return false; 
     } 
    } 
    return false; 
}