2013-03-29 5 views
3

Я потратил весь день на поиск ответа .. но кажется, что ничего не может исправить. я предполагаю, что каждая версия была другая проблема ...Facebook php sdk 3.2.2 GetUser() всегда возвращается 0

хорошо это довольно просто, у меня есть этот код:

<?php 
    include_once("facebook.php"); //include facebook SDK 

    ######### edit details ########## 
    $appId = '****'; //Facebook App ID 
    $appSecret = '****'; // Facebook App Secret 
    ################################## 

    //Call Facebook API 
    $facebook = new Facebook(array(
     'appId' => $appId, 
     'secret' => $appSecret, 
     'cookie' => true 
    )); 

    $fbuser = $facebook->getUser(); 


    if ($fbuser) { 
    // Do Something 

    } 
    else{    
    //Show login button for guest users 
    $loginUrl = $facebook->getLoginUrl(array('redirect_uri'=>$homeurl,'scope'=>$fbPermissions)); 
    echo '<a href="'.$loginUrl.'"><img src="images/facebook-login.png" border="0"></a>'; 
    } 
    ?> 

я получаю 0 в пользователю получить каждый раз. , когда я перехожу к «логину на facebook», и я не вошел в систему, я получаю экран входа в facebook. , когда я перехожу к «логину на facebook» и я вошел в систему, facebook перенаправляет меня на мою страницу, и я получаю 0, чтобы снова получить пользователя.

Я tring, чтобы запустить его на моем локальном хосте, возможно, это проблема?

надежды кто-то может помочь .. ТНХ

+0

Вы пробовали использовать это совместно с javascript sdk? – TommyBs

+0

В соответствии с Facebook :: getUser() Этот метод возвращает идентификатор пользователя Facebook текущего пользователя или 0, если нет зарегистрированного пользователя. Пожалуйста, используйте PHP php sdk, предоставленный в разделе разработчика facebook: https: // github.com/facebook/facebook-php-sdk – Arvind

+0

thx для комментария. мой код прост, как вы можете видеть, я начинаю думать, что только Facebook может помочь мне в этом ... –

ответ

-1

Попробуйте, это кусок кода моего одноклассник написал, потому что я боролся с FB входом Aswell. Работал для меня.

<?php 
    session_start(); 
    require_once 'facebook/facebook.php'; 

    $facebook = new Facebook(array(
     'appId' => '3525325', <- fake appID ofcourse, enter your own 
     'secret' => 'fauuf983f9f', <- fake secret, enter your own 
    )); 

    $user = $facebook->getUser(); 

    if ($user) { 
     try { 
     $_fb['user'] = $facebook->api('/me'); 
     } catch (FacebookApiException $e) { 
     error_log($e); 
     $_fb['user'] = null; 
     } 
    } 

    if ($user) 
    { 
     $_fb['logouturl'] = $facebook->getLogoutUrl(); 
     $_fb['authed'] = true; 

     echo '<h1>Logged in</h1>'; 
     echo 'Fbid: '.$user; 

     echo "<br /><br /><pre>"; 
     print_r($_fb['user']); 
     echo "</pre>"; 
    } 
    else 
    { 
     $_fb['loginurl'] = $facebook->getLoginUrl(array('scope' => 'email')); 
     $_fb['authed'] = false; 
     echo '<a href="'.$_fb['loginurl'].'">Login with Facebook</a>'; 
    } 
?> 
<html> 
    <head> 
     <title>Login</title> 
    </head> 
    <body> 
    </body> 
</html> 

Надеюсь, он вам пригодится. Удачи :) Вход в Facebook вызвал у меня много раздражения: p

+0

thx для комментария. все еще то же самое даже с ур кодом. я использую его на моем localhost u думаю, что это может быть проблемой? –

+0

Да. Вход в Facebook и кнопка Like не работали для меня на localhost. Загрузите их в (под) домен и повторите попытку. –

5

У меня была аналогичная проблема с использованием того же простого сценария входа. Я пробовал почти все, но ничего не помогло. (странно, что за день до того, как все работало нормально).

Так началась отладка «base_facebook.php» и обнаружили, что функция getAccessTokenFromCode удалось без исключение (молча).

Оказалось, что ответ _oauthRequest дал сообщение об ошибке ответ вместо ожидаемого маркера ответа:

$access_token_response = 
     $this->_oauthRequest(
      $this->getUrl('graph', '/oauth/access_token'), 
      $params = array ('client_id' => $this->getAppId(), 
          'client_secret' => $this->getAppSecret(), 
          'redirect_uri' => $redirect_uri, 
          'code' => $code)); 

Так, добавляя эхо $ access_token_response; сразу после этой функции найдена моя проблема.

Ошибка ответа заключалась в том, что мое приложение было настроено как приложение Native/Desktop. После того, как я изменил его на Интернет the getUser(); дал правильный идентификатор пользователя.

Надеюсь, это поможет.

+0

У вас это получилось, теперь я вижу ошибку. i get: {"error": {"message": "Invalid redirect_uri: \ u200eGiven URL-адрес не разрешен конфигурацией приложения. \ U200e", "type": "OAuthException", "code": 191}} Возможно, вы знаете, в чем проблема? –

+0

URL-адрес, который я дал facebook в функции, и URL-адрес, который я дал в facebook в настройках, совпадают ... –

+0

Я потратил целый день на все, чтобы решить эту проблему, и, наконец, я получил благодаря вам. – cawecoy

Смежные вопросы