2011-03-18 62 views
0

我有一個Flash應用程序正在使用Big Spaceship類(http://www.bigspaceship.com/blog/labs/bss-classes-flash-and-the-fb-graph/ )執行授權。這個工作正常,直到Facebook推出了Canvas的POST。正如遷移文檔中所建議的,我已經在應用程序設置中爲Canvas激活了POST,並且更改了將會話數據拉到的PHP從使用$ _GET到$ _REQUEST,但是在$ _REQUEST對象中不再有一個名爲session的參數。Facebook的畫布缺少會話

<?php 
    $session = ''; 
if(isset($_REQUEST["session"])) 
{ 
    $session = urldecode($_REQUEST["session"]); 
    if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE')) 
    { 
     $session = htmlspecialchars($session); 
    } 
} 
?> 

這應該是包含來自Facebook,這大飛船OAuthBridge類要求所有會話的數據的JSON字符串。有誰知道爲什麼這些數據不再存在,或者舊的JSON屬性名稱是什麼,所以我可以自己重建它?

回答

1

你想要的信息不在名爲「session」的參數中,它在「signed_request」參數中。您需要對其進行解碼,其中包含一個json數組,並且會話密鑰位於oauth_token中。

有一個例子在這裏(向下滾動): http://developers.facebook.com/docs/guides/canvas/

簽名的請求記錄在這裏: http://developers.facebook.com/docs/authentication/signed_request/

+1

這就是整理我,謝謝!對於使用Big Spaceship代碼的其他人,您必須用base64解碼$ _REQUEST ['signed_request']替換最初的PHP。小心不要json_decode,因爲BS的OAuthBridge期望接收JSON字符串,而不是解碼對象。 – shanethehat 2011-03-18 10:38:08