2012-02-23 167 views
3

我正在使用FB PHP SDK和Code Igniter 2 Framework。Facebook PHP SDK - 注销问题

我有一个注册页面,我可以显示一个链接,供用户点击并批准该应用程序并授予其访问其基本数据和电子邮件的权限。这似乎工作正常(虽然我已将它设置为一个弹出窗口,它不会弹出,它只显示在同一页!)。

我的问题是,使用FB登录后,页面显示一个注销链接,点击时应注销它(因此再次显示登录链接),但它不起作用。

我有一个参数设置为将页面转到某个页面,并确实有效。只是出于某种原因,FB“会话”停留在周围,用户仍然使用FB登录。

任何想法?

我在我的控制器代码:

// Facebook Connect 
    $fb_config = array(
     'appId' => 'xxx', 
     'secret' => 'xxx' 
    ); 

    $this->load->library('facebook', $fb_config); 

    $user = $this->facebook->getUser(); 

    if ($user) { 
     try { 
      $data['user_profile'] = $this->facebook->api('/me'); 
     } catch (FacebookApiException $e) { 
      $user = null; 
     } 
    } 

    if ($user) { 
     $params = array('next' => 'http://localhost/game/index.php/game/login'); 
     $data['logout_url'] = $this->facebook->getLogoutUrl($params); 
    } else { 
     $params = array('scope' => 'email, publish_stream, publish_actions', 'display' => 'popup'); 
     $data['login_url'] = $this->facebook->getLoginUrl($params); 
    } 

末小问题 - 我应该甚至可以使用PHP SDK,或者我应该使用JavaScript SDK?我无法找到任何信息哪一个是最适合任何工作?! Confused.com

+0

如果你试图随PHP SDK中的例子吗?它是否注销当前用户? – zerkms 2012-02-23 20:54:06

+0

刚试过。显示相同的行为。允许我在应用程序中注册,登录后,可以在页面上查看详细信息。点击“注销”什么都不做,除了实际上我从FB中注销(但不在测试PHP页面!!!) – 2012-02-23 21:23:43

+0

文件php sdk github上的错误然后可能 – zerkms 2012-02-23 21:33:51

回答

3

我应该甚至使用PHP SDK,还是应该使用Javascript SDK?

如果您的应用程序可以使用JavaScript SDK而不是PHP SDK来创建,那就去做吧。保存您的服务器的CPU周期以获取其他内容。它也允许你异步执行登录,这可以很好。

复杂的应用程序通常同时使用JavaScript SDK和PHP SDK--在这种情况下,登录通常在Javascript端处理(PHP SDK会自动知道用户是否通过JavaScript登录)。

1

我的问题是,被记录在FB后,页面显示 注销链接,点击它的时候,应该将他们注销(并因此表现出 登录链接再次),但它不工作。

由您的网站造成的这个原因无法清除fb会话。在cakephp框架中使用facebook api时,我有同样的问题。并且...我尝试在用户注销时清除会话(我不喜欢它)。
我调试并看到,当facebook帐户登录成功时,$this->facebook->user()不为空并且不会引发异常。

+0

是的,听起来像是同一个问题。我刚刚设法清除了FB会话,但它搞砸了登录! – 2012-02-24 17:32:20

+0

@Mr Pablo:完全不一样的问题。正如你记得 - 你** **可以执行额外的API请求,这是不可能的 – zerkms 2012-02-24 21:14:13

+0

@MrPablo我不知道Code Igniter身份验证。在cakephp中,我允许用户使用user_id和facebook_id登录(刚刚从facebook API请求)
NamLe 2012-02-27 02:25:41

0

您需要在注销链接中添加一个活动的用户访问令牌才能使注销链接生效。

参考:https://developers.facebook.com/docs/reference/php/facebook-getLogoutUrl/

例如:

if ($user) { 
    $params = array (
    access_token => ''.$access_token.'', 
); 
    $logoutUrl = $facebook->getLogoutUrl($params); 
} else { 
$params = array(
    scope => 'read_stream,publish_stream,publish_actions,read_friendlists', 
    //redirect_uri => $url 
); 
    $loginUrl = $facebook->getLoginUrl($params); 
};