2013-06-25 3 views
4

У меня есть логин с facebook на моем сайте. Некоторое время это работало хорошо, но вчера внезапно перестало работать. Я отслеживал проблему с методом getUser(), который, как представляется, всегда возвращает 0.

мой код выглядит следующим образом:

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

$facebook = new Facebook(array(
    'appId' => 'xxxxxxxxxxxxx', 
    'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxx' 
)); 

$user = $facebook->getUser(); 
if ($user) { 
    try { 
    $profile = $facebook->api('/me'); 
    $logoutUrl = $facebook->getLogoutUrl(
     array(
      'next'=>$baseUrl.'/fblogin/fblogin.php?logout' 
     ) 
    ); 
    $userIsLoggedIn=true; 

    } catch (FacebookApiException $e) { 
    echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>'; 
    $user = null; 
    $loginUrl = $facebook->getLoginUrl(
     array(
      'scope'=>'email,publish_stream', 
      'redirect_uri'=>$returnAfterLoginUrl 
     ) 
    ); 
    } 
}else{ 
    $loginUrl = $facebook->getLoginUrl(
     array(
      'scope'=>'email,publish_stream', 
      'redirect_uri'=>$returnAfterLoginUrl 
     ) 
    ); 
} 
?> 

То, что я пытался (и может найти обратно в моей истории)

  1. Обновление SDK до последней версии
  2. раствором Facebook PHP SDK - getUser() suddenly returns 0 (добавление 2 $ CURL_OPTS)
  3. Решение suddenly, getUser became to return 0.(PHP 3.1.1 SDK) (добавление base_domain в $ DROP_ QUERY_PARAMS)
  4. Решение Facebook login is suddenly not working anymore? (увеличение curlopt_connecttimeout)
  5. Создание нового приложения, без удачи

Я использую PHP версии 5.3.3

Я пытался получить его работу с вчерашнего дня, без везения :(

Кто-нибудь знает, что может быть проблемой и, что более важно, каково может быть решение?

Спасибо

ответ

1

решаемые, переместив сценарий в другой подкаталог на сервере ... /Войти/стали/facebook/Логин/

у меня нет ни малейшего представления, почему это делает разницу ...

2

Убедитесь, что режим песочницы отключен, и перепроверьте настройки снова включая APPID, секрет.

и попробуйте изменить URL входа в $loginUrl = $this->facebook->getLoginUrl($pram);

+0

Спасибо за ваш ответ, Изолированный режим отключен и правильность настроек (он работал нормально в течение нескольких недель до вчерашнего дня). Изменение loginUrl вроде бы не принесет пользы, потому что в моей сфере нет $ this? – user6

+0

, так что происходит после того, как пользователь перенаправляется на вход в facebook и входит в систему? это работает? – drarkayl

+1

После того, как пользователь предоставил соответствующие разрешения для приложения, он вернется на сайт, где getUser() все равно вернет 0 :( – user6

9

Ваш порт 80 или порт 241 может быть заблокирован, вызывая CurlException 7. Для того, чтобы проверить, что просто загрузите файл примера на вашем сайте. Он покажет ошибку.

В моем случае у меня был бета-домен, размещенный на 000webhost.com. Недавно он заблокировал порт 80, который вызвал ту же ошибку. Когда я переместил свой домен на другой хостинг, проблема была решена.

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

===== EDIT =====

Решение проблемы заключается в том, что (я думаю, хотя это не доказано), получают соединение по протоколу HTTPS, как это мое соблюдение, что PHP SDK делает не работает в http-соединении. Посмотрите на мой вопрос here

====== YEAH! ПОСЛЕДНИЙ И ПРАВИЛЬНЫЙ ОТВЕТ НА ПОСЛЕДНИЙ =======

Такая ситуация может возникнуть только тогда, когда Curl отключено вашим веб-хостинга (применимо для 100% случаев подобной проблемы). Ваш сайт будет работать правильно, если cURL будет установлен.Как правило, ошибка, которую пользователи получают (если ERRORREPORTING включен) является
Fatal error: Uncaught CurlException: 7: couldn't connect to host thrown in /home/.../base_facebook.php on line ...

0
$facebook = new Facebook(array(
     'appId' => '***************', 
     'secret' => '**************************', 
     'cookie' => false //add this and try 
     )); 

и попробуйте добавить разрешение «read_stream» проверить это после очистки куки браузера ..

0

Его Happen мне, и когда я проверить мой журнал апачский я нашел это:

tail -f for apache log

И я нашел сво SSL проблемы, когда связь с Facebook через PHP SDK (с помощью Curl). Вы должны установить CURL_OPTS "CURLOPT_SSL_VERIFYPEER" в "false".

Ex:

facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false;