2011-08-20 115 views
0

我正在写一个Facebook应用程序,该应用程序获取有关用户的一些信息并对其进行一些操作。在Facebook上获取用户信息

我得到了用户的权限是这样的:

$facebook = new Facebook(array(
    'appId' => APPID, 
    'secret' => 'APPSECRET', 
)); 

$logoutUrl = $facebook->getLogoutUrl(); 

(默认权限是USER_INFO)

$user_profile = $facebook->api('/me'); 

在用户登录后,应用程序要经过几个PHP页面,并在显示一个味精。 在最后一个PHP页面中,我尝试再次获取用户信息。

$facebook = new Facebook(array(
     'appId' => APPID, 
     'secret' => 'APPSECRET', 
    )); 

    $logoutUrl = $facebook->getLogoutUrl(); 
    $user_profile = $facebook->api('/me'); 

我的问题是,在某些浏览器(Chrome)上它可以正常工作,而在其他浏览器上(IE)则不会。
我得到一个Oauth异常,我没有一个有效的认证密钥。

你明白这是为什么吗?

回答

0

在这种情况下启动认证流程。 ,如果这仍然发生,看看这是否实现cookie设置。

尝试正确设置标题。

0

的事情是很简单的:

首先,你的init的Facebook:

$facebook = new Facebook(array(
    'appId' => APPID, 
    'secret' => 'APPSECRET', 
)); 

然后你就得到了用户

$user = $facebook->getUser(); 

最后,你测试是否有用户与否,如果在那里你做所有的facebook api请求并生成注销url,如果没有,你会得到登录网址并将浏览器重定向到该url。

if ($user){ 
    $user_profile = $facebook->api('/me'); 
    $logoutUrl = $this->facebook->getLogoutUrl(); 
else{ 
    $loginUrl = $facebook->getLoginUrl(array('scope' => 'email,user_birthday')); 
    echo '<script type="text/javascript">top.location.href = "'.$loginUrl.'"</script>'; 
} 

这应该适用于所有的浏览器,因为我测试了,那么好的运气。