2012-12-05 44 views
1

我們最近推出了一個應用程序,用戶可以邀請朋友參加比賽。因爲我們是盡職的軟件工程師,我們希望在用戶接受請求後立即刪除應用程序請求。當刪除應用程序請求時發生錯誤

下面的代碼在幾個項目中工作,但現在失敗並出現錯誤。

代碼(的requestId =簡單的ID沒有 「_userId」):

$this->facebook->api($requestId, "DELETE", array("access_token" => $this->App["fb_app_access_token"])); 

錯誤:

{ 
    "error": { 
    "message": "(#100) Requires valid app request IDs", 
    "type": "OAuthException", 
    "code": 100 
    } 
} 

我們不user_ID的連接到REQUEST_ID,因爲用戶沒有通過認證該應用程序,所以我們根本不知道該ID。

有人遇到過上述問題或找到了解決此問題的方法嗎?

回答

4

您不能單獨使用REQUEST_OBJECT_ID來刪除,因爲該請求可能已發送給多個用戶,這樣就不會清楚您想要刪除哪個實例。

您必須使用REQUEST_OBJECT_ID和USER_ID的組合,或者僅將REQUEST_OBJECT_ID與用戶訪問令牌結合使用。由於在用戶還沒有連接到應用程序時您沒有這些信息,所以在這種情況下,您不能刪除請求實例。

您只能等到他們連接到您的應用程序,然後刪除它。

docs說,

「As a best practice when the the user lands in your app you should read outstanding app requests via the Graph API.」

- 在這一點上,你可以刪除所有未完成的請求,如果他們不再需要了。

順便說一句,鏈接的文件還說,在用戶「接受」它們之後,必須刪除請求。人們可以閱讀這意味着,只有當用戶實際連接到您的應用程序時,纔可以將請求算作「已接受」。

+0

非常感謝你許多。暗示,一個請求可能屬於多個用戶,這實際上是一個改變遊戲規則的遊戲。從來沒有想過這個。所以這真的很明顯,爲什麼我目前的實施不起作用! –

0

每個請求ID表示在時間

只有一個用戶唯一的請求刪除的應用請求,你可能首先做它的刪除請求之前查詢REQUEST_ID。

您可以查詢的REQUEST_ID圖形API是否真的存在,不會被刪除,那麼你可以嘗試在REQUEST_ID

https://graph.facebook.com/[REQUEST_ID]?access_token=APP_ACCESS_TOKEN 

一個DELETE請求欲瞭解更多信息有關要求見Facebook App Requests Overview

+0

這正是我目前使用的實現。如果用戶尚未授予該應用程序,則無法獲取完整的請求標識(請求和用戶標識的組合)。所以在認證之前根本不可能刪除請求。 –

相關問題