我有以下代码登录Facebook:
// Include Facebook SDK
$this->facebook = new Facebook(array(
'appId' => 'APP ID',
'secret' => 'APP SECRET',
'cookie' => true
));
$uid = $this->facebook->getUser();
if($uid) {
try {
echo 'Done!';
} catch (FacebookApiException $e) {
echo $e;
error_log($e);
}
} else {
$loginUrl = $this->facebook->getLoginUrl(array(
'redirect_uri' => 'http://ogabrielsantos.com.br/dev/index.php?route=account/connect/facebook',
'scope' => 'user_birthday'
));
echo('<script>top.location.href = "' . $loginUrl . '";</script>');
}
更新1
我可以授权该应用程序,但是,在授权后,我无法获取已登录的用户,永远重定向到
http://ogabrielsantos.com.br/dev/index.php?route=account%2Fconnect%2Ffacebook&state=RANDOM STATE&code=RANDOM CODE#_=_
我尝试过:
http://ogabrielsantos.com.br/dev/index.php?route=account/connect/facebook
; 没有任何效果。
您可以查看会发生什么:
http://ogabrielsantos.com.br/dev/index.php?route=account/connect/facebook
Facebook要求您授权该应用获取您的网站,这是一个安全的信息。
更新2
以下代码:
$this->facebook = new Facebook(array(
'appId' => $this->connect->config->get('facebook_api_key'),
'secret' => $this->connect->config->get('facebook_app_secret'),
'cookie' => true
));
$uid = $this->facebook->getUser();
echo'<pre>';
print_r($this->facebook);
echo'</pre>';
exit;
返回:
Facebook Object
(
[sharedSessionID:protected] =>
[appId:protected] => APP ID
[appSecret:protected] => APP SECRET
[user:protected] => 0
[signedRequest:protected] =>
[state:protected] =>
[accessToken:protected] => APP ID|APP SECRET
[fileUploadSupport:protected] =>
[trustForwarded:protected] =>
)
我认为accessToken
是错误的,使用管道分隔符返回我的APP ID
和SECRET
。
更新3:
现在,我验证了代码,但始终得到Fatal error: Uncaught OAuthException: Error validating verification code
if(isset($_GET['code'])) {
$api = $this->facebook->api('/oauth/access_token', array(
'client_id' => APP ID,
'redirect_uri' => 'http://ogabrielsantos.com.br/dev/index.php?route=account/connect/facebook',
'client_secret' => APP SECRET,
'code' => $_GET['code']
));
echo'<pre>';
var_dump($api);
print_r($this->facebook->getUser());
echo'</pre>';
exit;
}
我已经阅读了一些类似但无法帮助我的问题。
答案 0 :(得分:1)
你在使用localhost吗?如果是的话可能就是原因。 如果没有,请检查developers.facebook.com/apps/APP_ID中的应用设置 1.您必须将代码中写的网址与应用设置中的网址进行比较。 2.另一个原因可能是您的应用设置中的网址没有正确编写,我记得必须在网页标签设置中的网址末尾添加index.php。为我工作 3.另一个选择是获取新的APP_SECRET并更新您的代码 这些选项来自我个人的经验,你的问题也可能是别的,但你没有尝试任何尝试
答案 1 :(得分:1)
Facebook共享和Facebook登录功能完全独立,每个功能都需要自己的应用程序。
您是否在要登录的页面中使用Facebook共享?