首先,要得到这个出路,我已经花了几个小时翻翻答案在这里StackOverflow上这个问题,并试图解决它在我自己的,但它只是不工作(再)。 所以无论如何...
昨天,一切运行良好。 上床睡觉,醒来后,用Facebook登录不上我的网站2工作了。 登录链接向我要求我批准应用的Facebook页面,但它重定向我回网站后,并没有在记录我,我很快追踪)总是返回0。问题的getUser(所以我建立一个新的(测试)的应用程序有非常非常基本的代码,只是为了看看是否能工程。 事实并非如此。 下面的代码:
<?php
session_start();
require_once("facebook.php");
$config = array();
$config['appId'] = '199971880127910'; //test app so I don't mind showing these
$config['secret'] = 'e065588cb1edd96f821de8b3d362c488';
$config['trustForwarded'] = true;
$facebook = new Facebook($config);
try {
$user = $facebook->getUser();
var_dump($user);
} catch (Exception $e) {
$e->getMessage();
}
$loginUrl = $facebook->getLoginUrl(array('redirect_uri' => 'http://gtcrais.redirectme.net/test/'));
echo "<a href='".$loginUrl."'>Login</a>";
?>
在第二个答案在这里吸引我的目光。 我想,解决方案,它没有工作,所以我打开了base_facebook.php和滚动到该“代码”传递给一些变量的行 - 行458:
$代码= $这个 - >引用代码();
我回显的这一点,并正确显示从URL中传递的代码参数。 该问题的行原来是低于一个的一对夫妇行:
$ =的access_token $这 - > getAccessTokenFromCode($代码);
当通过$ code变量,函数将返回false以$一个的access_token值。 在该功能中,这部分代码抛出异常:
try {
// need to circumvent json_decode by calling _oauthRequest
// directly, since response isn't JSON format.
$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));
} catch (FacebookApiException $e) {
// most likely that user very recently revoked authorization.
// In any event, we don't have an access token, so say so.
print_r($e);
return false;
}
的print_r($ E)显示乱码的一个巨大的BLOB(我有点一个小白的,所以我不能从中读取几乎所有的东西是有道理的)。 我在那里看到是重复的唯一的事
SSL证书问题,验证该CA证书是确定。 详细信息:错误:14090086:SSL
这是多远我跟调试此。 任何帮助表示赞赏。 再次,昨天,一切都工作正常。 今天,没有一个单一的代码行改变了,它不工作了。 令人震惊=(噢,我运行WAMP与PHP 5.4.3
编辑:这是错误消息: http://i.imgur.com/TeY8h.png
EDIT2:解决:
在base_facebook.php添加在$ CURL_OPTS以下2行:
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => 2
这使得它...
public static $CURL_OPTS = array(
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_USERAGENT => 'facebook-php-3.2',
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => 2
);
我不知道有多少安全问题是这样的,但它使得与Facebook工作的登录,所以你有它(并有我有。整整一天失去了对这个,FML)。
EDIT3:新的SDK发布了修复此问题: https://github.com/facebook/facebook-php-sdk