2014-01-15 42 views
2

我正在开发一个网页,我试图通过PHP SDK登录一个用户。facebook登录php没有得到编号

我编写了我的文件index.php,它位于facebook文件夹中,仅用于测试,位于我的域中。出于任何奇怪的原因,当我连接时,我会得到验证码,但我尝试拨打$facebook -> getUser();并返回0!如果我尝试使用$facebook-> getAccessToken();获得令牌,它也会正确返回。

这里是我设计的代码。

代码的第一部分,要求进行身份验证,我重定向到一个callback.php文件,其中我尝试获取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

require_once 'facebook.php'; 
$facebook = new Facebook(array(
    'appId' => '378488665495077', 
    'secret' => 'XXXXXX', 
)); 
$access_token = $facebook->getAccessToken(); 
$user_Id = $facebook->getUser(); 
$user_session = $facebook->getAccessToken(); 
echo $user_Id; 

我得到一个URL,看起来像:http://myweb.com/facebook/callback.php?code=AQjQ6 .....

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

回答

0

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

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

例如:

//注:Facebook的用户重定向回我的网站“到登录页面 ”后,我重定向用户返回到该页面与它们展开。
这允许会话被创建,通过代码隐藏 从URL。缺点是,它需要更长的时间,平均登录可以在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);