2014-02-11 6 views
0

PHP Facebook-SDK возвращает 0 для меня каждый раз, когда я вызываю метод getUser(). Я ищу решение без использования JS. Это то, что у меня есть до сих пор.Facebook SDK-PHP - всегда возвращает 0 при вызове getUser()

$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(); 

     } 
+0

Тестирование на локальном хосте? –

ответ

0

Подумайте об этом в течение секунды. Вы сохраняете loginURL в свой $login var, после чего вы пытаетесь получить данные пользователя.

Это никогда не сработает. Вы не предлагаете пользователю использовать URL-адрес для входа, поэтому он не предоставил доступ. Пользователю необходимо вручную просмотреть URL-адрес и подтвердить разрешения. После этого вы сможете получить данные пользователя.

Подведем итог:

  1. Инициализировать Facebook SDK
  2. Проверьте, если пользователь уже разрешен доступ (getUser() будет хорошо для этого)
  3. Если да, то продолжить, как обычно , Пользователь предоставил доступ.
  4. Если нет (getUser() 0), скажите пользователю посетить URL вы получите через getLoginUrl())
  5. Убедитесь, что вы включили redirect_uri ключ в массиве вы передаете в 4. вы можете перенаправить к тому же URI, так как мы проверяете получить ли мы пользователю данные или предлагая пользователю войти
  6. После разрешения доступа (или нет), ваш пользователь будет перенаправлен от Facebook на свой redirect_uri
  7. Если бы все было нормально, при запросе доступа вы должны быть в этап 3

Логическая ошибка у вас есть, то, что вы думаете, getLoginURL() автоматически предоставляет вам доступ к UserData. Но это не так, вам нужны ваши пользователи, чтобы посетить тот самый URL-адрес, чтобы они могли предоставлять доступ самостоятельно.

+0

Сделайте это, но не сработайте. –

+0

«не работает» не является сообщением об ошибке. Я могу надежно работать с ... – thpl

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