2011-11-26 80 views
0

我有一個Facebook畫布應用程序,我使用的是最新版本的PHP SDK。Facebook access_token未激活,重試變爲活動狀態

我有一個看起來像這樣的工作流程。用戶登錄Facebook並點擊應用程序列表中的應用程序。

用戶登錄表單頁面 - >點擊提交 - >用戶沒有看到它通過表單處理頁面並嘗試發佈到牆上 - >標題重定向到邀請頁面。

該流程的工作原理是因爲我內置了透明的錯誤處理。但是,在第一次走過這條河流時,沒有牆柱。重複點擊Facebook圖標轉到用戶主頁,點擊用戶應用列表中的應用鏈接。

用戶登錄表單頁面 - >點擊提交 - >用戶沒有看到它通過表單處理頁面並嘗試發佈到牆上 - >標題重定向到邀請頁面。

這個時間和每一次後它的工作。

我在第一次嘗試期間收到的錯誤是會話access_token無效。之後的每一次,只要用戶不註銷它就會工作,我永遠不會得到一個壞的代幣。

在窗體過程頁面裏的牆後的代碼是:

$user = null; 
require "/usr/home/app/www/fb/facebook.php"; 

//facebook application 
$fbconfig['appid' ]  = "xxx"; 
$fbconfig['secret']  = "xxx"; 
$fbconfig['baseUrl'] = "http://www.app.com/fb"; 
$fbconfig['appBaseUrl'] = "http://apps.facebook.com/app"; 

// Create our Application instance. 
$facebook = new Facebook(array(
    'appId' => $fbconfig['appid'], 
    'secret' => $fbconfig['secret'], 
)); 

//session_write_close(); 
$user = $facebook->getUser(); 

    try { 
     $publishStream = $facebook->api("/me/feed", 'post', array(
      'message' => "mess", 
      'link' => 'http://apps.facebook.com/app', 
      'picture' => 'http://images.app.com/img.jpg', 
      'name' => 'name', 
      'description'=> 'des' 
     ) 
     ); 
    } catch (FacebookApiException $e) { 
     d($e); 
    } 
    header("Location: https://www.app.com/fb/invite.php"); 

這是截斷離開了那是錯誤的信息,確切的錯誤:

FacebookApiException Object 
(
    [result:protected] => Array 
     (
      [error] => Array 
       (
        [message] => An active access token must be used to query information about the current user. 
        [type] => OAuthException 
       ) 

     ) 
.... 

回答

0

因此,在撞擊牆壁一週後,我想到了! 我在第一頁末尾添加了一個腳本來重置滾動條。

<script> 
    FB.init({ 
    appId : 'appid', 
    status : true, 
    cookie : true, 
    xfbml : true, 
    }); 
</script> 

下一頁是處理,直到我到達邀請屏幕出現的下一個頁面時,處理才正常。在該頁面上是FB.init,

function callAppReq() { 
    FB.init({ 
    appId : 'appid', 
    cookie: true, 
    channelUrl : 'https://apps.facebook.com/app', 
    oauth : true 
}); 

加載此頁面後,每次此應用程序正常工作。我正在撓頭,無法弄清楚。在我注意到之前,「oauth:true」是唯一沒有在第一頁上被調用的事情。因此,在該愚蠢的腳本,我需要做出滾動條消失我說「:OAuth的:真正的」 ...

<script> 
    FB.init({ 
    appId : 'appid', 
    status : true, 
    cookie : true, 
    xfbml : true, 
    oauth : true 
    }); 
</script> 

羅」你看,現在它工作。我非常沮喪,這是這個代碼打破了事情,但非常高興,我現在已經修復並瞭解問題是什麼!

0

也許你可以試試offline_access獲取非終止訪問令牌的權限?

+0

我真的不想要另一個權限只是爲了讓publish_stream權限正常工作。不過,謝謝你的迴應。 –