2011-12-16 71 views
5

此功能用于为我工作,直到Facebook决定强制执行一些更改。Facebook cookie和oauth 2.0更改

function get_facebook_cookie() { 
    $app_id    = '[MyAppID]'; 
    $application_secret = '[MyAppSecrect]'; 

    if(isset($_COOKIE['fbs_' . $app_id])){ 
     $args = array(); 
     parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args); 
     ksort($args); 
     $payload = ''; 
     foreach ($args as $key => $value) { 
       if ($key != 'sig') { 
       $payload .= $key . '=' . $value; 
       } 
     } 
     if (md5($payload . $application_secret) != $args['sig']) { 
       return null; 
     } 
     return $args; 
     } else { 
     return null; 
     } 
} 

我是能够得到FB用户访问令牌一样容易

$cookie['access_token'] 

现在,它似乎并不认为我能够再检索该信息。

我成功(很容易)能够对我的JavaScript代码进行必要的更改,但我有点难住在PHP方面。作为一个快速的一面说明,我使用codeigniter,并且在尝试使FB PHP SDK发挥出色方面遇到了很多麻烦,我也没有看到将PHP 3 SDK集成到codeigniter的任何示例,所以我寻找一个快速和肮脏的解决方案,让我从这样让我用下面的调用Facebook的API该cookie获得访问令牌:

'https://api.facebook.com/method/friends.getAppUsers?access_token=' . $cookie['access_token']; 

任何帮助是极大的赞赏。

回答

7

这是因为facebook将cookie名称从fbs_更改为fbsr_

但有更多的变化。只需按照this steps

+1

感谢您的建议。将代码更改为fbsr_将返回以下php错误“消息:未定义的索引:sig”,它在上面的代码中引用此行“if(md5($ payload。$ application_secret)!= $ args ['sig']) ”。有任何想法吗? – Joshua 2011-12-16 21:43:07