facebook登录php没有获得id

时间:2014-01-15 20:34:40

标签: php facebook facebook-php-sdk

我正在开发一个网页,我正在尝试通过PHP SDK登录用户。

我已将我的文件index.php编码为facebook文件夹,仅用于测试,以我的域为根。出于任何奇怪的原因,当我连接时,我获得了身份验证代码,但我尝试调用$facebook -> getUser();并返回0!如果我尝试使用$facebook-> getAccessToken();获取令牌,它也会正确返回。

这是我设计的代码。

代码的第一部分,请求身份验证,然后重定向到我尝试获取callback.php的{​​{1}}文件。这是代码:

userId

Index.php

<?php require_once ('facebook.php'); $facebook = new Facebook($config); $facebook = new Facebook(array( 'appId' => '378488665495077', 'secret' => 'XXXX', )); $login_url = $facebook->getLoginUrl(array('redirect_uri'=>"http://myweb.com/facebook/callback.php")); ?> <a href="<?php echo $login_url;?>">Login with facebook</a>

callback.php

我得到的网址如下:http://myweb.com/facebook/callback.php?code=AQjQ6 .....

有谁知道这个问题?在我看来,似乎必须在http://developers.facebook.com中配置一些不好的东西,但我真的不知道是什么。

1 个答案:

答案 0 :(得分:0)

在重定向时,当用户登陆您的页面时,会话正在写入浏览器。

  1. 确保您正在启动会话,启用Cookie支持。
  2. 可能需要页面刷新才能从浏览器中的会话中获取信息。
  3. 由于需要注销方法,当用户被重定向回注销页面时,我使用php sdk清除创建的会话facebook,然后将用户重定向到他们注销的页面。
  4. 示例:

      

    //注意:在facebook将用户重定向回我的网站后“登录   页面“我将该用户重定向回他们开始使用的页面   这允许创建会话,隐藏传递的代码   来自网址。缺点是,需要更长时间,平均登录可以向上   完成重定向的时间为3到5秒。

    session_start();
    require './src/facebook.php';
    $facebook = new Facebook(array(
      'appId'  => 'your app id here',
      'secret' => 'your app secret',
      'cookie' => true, // enable optional cookie support
    ));
    try { 
    $user = $facebook->getUser(); 
    } catch (FacebookApiException $e) { 
    //error_log($e);
    $user = null;
    }
    if($user){
       $access_token = $facebook->getAccessToken();
    }
    $params = array(
      'redirect_uri' => 'Your redirect url',
    );
    $loginUrl = $facebook->getLoginUrl($params);
    
    $params = array(
     'next' => 'Your redirect url' 
     );
    $logoutUrl = $facebook->getLogoutUrl($params);