2014-01-08 6 views
0

Я пытаюсь написать логин в facebook, но он не работает, я разделил код на важные или проблемные части, как показано ниже: я узнал что метод getUser всегда возвращает 0 независимо от того, зарегистрирован ли пользователь в facebook или нет, я изучил подобные вопросы по SO, но не смог найти решение. Что может быть неправильным? Благодарю.Facebook не работает: getUser() всегда возвращает 0

<?php 
    require 'facebook/facebook.php'; 
    $app_id = "123456"; 
    $app_secret = "xyz"; 

    $facebook = new Facebook(array(
     'appId'  => $app_id, 
     'secret' => $app_secret, 
     )); 
    $user = $facebook->getUser(); 

    if ($user) { 
     try { 
     // Proceed knowing you have a logged in user who's authenticated. 
     $user_profile = $facebook->api('/me'); 
     } catch (FacebookApiException $e) { 
     error_log($e); 
     $user = null; 
     } 


    // Do stuff here  


    else { 

    echo "$user"; 

    } 
    ?> 

ответ

0

У меня тоже была эта проблема. Я сделал это ...

/**** FB APP DEETS ****/ 
DEFINE ('APPID', '123'); 
DEFINE ('APPSECRET', 'xyz'); 
DEFINE ('ACCESS_TOKEN', 'biglongtokenthinginhere'); 

$config = array(
     'appId' => APPID, 
     'secret' => APPSECRET, 
); 


     $facebook = new Facebook($config); 
     $facebook->setAccessToken(ACCESS_TOKEN); 

     // Get User ID 
     $user = $facebook->getUser(); 

Затем продолжить с если ($ пользователю) и т.д.

Так что я считаю, вам не хватает маркер доступа

Чтобы расширить свой маркер доступа, я использовал это. Я добавил его перед if ($ user) и запускал его один раз, а затем прокомментировал это. Он отображает новый токен доступа на экране, который вы помещаете в скрипт, и он не истекает. Обычно они длится всего 2 недели или что-то в этом роде

/* 
* EXTEND TOKEN - NOW EXPIRES NEVER 
*/ 

//$graphUrl = 'https://graph.facebook.com/oauth/access_token?client_id='.APPID .'&client_secret='.APPSECRET.'&grant_type=fb_exchange_token&fb_exchange_token='.ACCESS_TOKEN; 
//     
//$accessToken = @file_get_contents($graphUrl); 
//parse_str($accessToken); //get the access_token param in the string and would be named $access_token 
//if(!$access_token) $access_token = $accessToken; //if cannot be extended then just return the access token with 2 hours expiry 
//echo $access_token; 
//    
//exit(__FILE__.__LINE__); 
+0

Thanks.Can Я положил значение для токена доступа или как его получить? – bodesam

+0

Ну, вам нужно использовать конкретное приложение. Из памяти (ее было немного!), Вам нужно перейти сюда https://developers.facebook.com/tools/explorer/, выберите свое приложение из раскрывающегося списка и нажмите «получить токен доступа». В появившемся всплывающем окне перейдите на третью страницу и проверьте страницу управления, я думаю, что это так. Затем он даст вам хороший токен доступа. –

+0

Как я уже говорил, это было какое-то время, но я думаю, что так я и думал об этом :-) –

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