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()突然返回0 (加2个$CURL_OPTS)
  3. 突然的解决办法,getUser变成了返回0。(PHP 3.1.1 SDK)(将base_domain添加到$DROP_QUERY_PARAMS)
  4. Facebook登录的解决方案突然不再起作用了?(增加 curlopt_connecttimeout)
  5. 创建一个新的应用程序,没有运气

我正在使用 PHP 版本 5.3.3

从昨天下午开始,我一直在努力让它工作,没有任何运气:(

有谁知道可能是什么问题,更重要的是,可能是什么解决方案?

谢谢

4

5 回答 5

9

您的端口 80 或端口 241 可能被阻止,导致 CurlException 7。检查是否只需将示例文件上传到您的网站。它将显示错误。

就我而言,我的 beta 域托管在 000webhost.com 上。它最近阻塞了导致相同错误的端口 80。当我将我的域移动到另一个托管服务时,问题就解决了。

我希望这有帮助。

=====编辑=====

问题的解决方案是(我认为虽然没有得到证实)获得一个 https 连接,因为我注意到 php sdk 在 http 连接中不起作用。在这里看我的问题

======是的!最后的正确答案=======

这种情况只有在您的网络主机禁用 cURL 时才会出现(适用于 100% 的类似问题的情况)。如果安装了 cURL,您的网站将正常运行。通常,用户收到的错误(如果打开了错误报告)是
Fatal error: Uncaught CurlException: 7: couldn't connect to host thrown in /home/.../base_facebook.php on line ...

于 2013-06-30T03:34:58.467 回答
2

确保沙盒模式已禁用并再次重新检查您的设置,包括 appId、secret 。

并尝试将您的登录网址更改为$loginUrl = $this->facebook->getLoginUrl($pram);

于 2013-06-25T08:05:37.313 回答
1

通过将脚本移动到服务器上的另一个子目录来解决它... /login/ 变成 /facebook/login/

我一点也不知道为什么这会有所不同...

于 2013-07-05T06:03:46.630 回答
0
    $facebook = new Facebook(array(
        'appId' => '***************',
        'secret' => '**************************',
        'cookie' => false //add this and try
        ));

并尝试在清除浏览器 cookie 后添加权限“read_stream”检查。

于 2013-07-03T11:20:23.117 回答
0

它发生在我身上,当我检查我的 apache 日志时,我发现了这个:

tail -f 用于 apache 日志

当通过 PHP SDK(使用 Curl)与 Facebook 通信时,我发现它存在 SSL 问题。您必须将 CURL_OPTS "CURLOPT_SSL_VERIFYPEER" 设置为 "false" 。

前任:

facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false; 
于 2014-04-15T11:35:16.537 回答