0

我有以下代码可以使用 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#_=_

我努力了:

  • 将APP放入服务器;
  • 验证 APP 设置。一切都是正确的;
  • 验证设置和代码中的 url 是否相同。一切正常;
  • 我的网址写得正确: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;
}

我已经阅读了一些问题,这些问题相似但无能为力。

4

2 回答 2

1

Facebook 分享和 Facebook 登录功能是完全独立的,每个都需要自己的应用程序。

您是否在要登录的页面中使用 facebook 共享?

参考:http ://www.ning.com/help/?p=8523

于 2014-01-19T09:03:53.073 回答
1

你在本地工作吗?如果是的话,这可能就是原因。如果没有,请在 developers.facebook.com/apps/APP_ID 中检查您的应用设置 1. 您必须将代码中编写的 url 与应用设置中的 URL 进行比较。2. 另一个原因可能是您应用程序设置中的 url 没有正确编写,我记得必须在Page Tab settings中我的 url 末尾添加 index.php 。为我工作 3. 另一种选择是获取新的 APP_SECRET 并更新您的代码 这些选项来自我的个人经验,您的问题也可能是其他问题,但您不会失去任何尝试

于 2012-09-07T11:36:08.577 回答