2011-12-16 72 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