2011-10-03 54 views
2

我允許用戶發送請求給其他用戶,邀請他們使用我的應用程序。用戶啓動的請求沒有刪除

請求發送正常,邀請用戶可以找到他們的方式回到我的應用程序。我遇到的問題是用戶返回後刪除請求。

首先 - 當用戶點擊請求時,我想刪除它,不管它們是否與我的應用程序交互。這將涉及向圖上的此對象發送DELETE:request-id_recipient-id。但是,因爲用戶可能沒有與我的應用程序進行交互,所以我沒有他們的user_id,所以我不能這樣做 - 用戶需要自己清理我的請求(不好)。

其次 - 即使當用戶不與我的應用程序進行交互,我得到他們的用戶ID和做呼叫刪除請求id_recipient-ID我得到這樣的迴應:

(#200)的實體(類EntAppRequest)支持,ID爲267270596647001,當前查看器無法看到500 ******(EntID:267270596647001)

這表明請求的接收方沒有權限使用其訪問令牌刪除它?這是正確的,因爲它似乎有點倒退給我。或者這是我需要manage_requests擴展權限的情況?這對我來說似乎也很奇怪,因爲它會爲用戶可能拒絕的Auth框添加額外的權限。

編輯 - 忘記提到了一個新的應用程序,所以它的使用要求2.0和2.0請求高效

任何幫助,將不勝感激。

+0

上述錯誤是存在的,而使用JS SDK。自從我嘗試使用PHP腳本來處理刪除請求,而這看起來工作正常。因此,這個問題似乎與JS SDK或可能使用訪問令牌有關。我不確定PHP和JS SDK在什麼情況下決定使用應用程序還是用戶訪問令牌,但這可能是問題所在。上面的第一個問題仍然沒有解決 –

回答

1

關於第一個問題。鑑於沒有用戶的用戶沒有與你的應用程序進行交互,似乎沒有辦法刪除發送給他們的請求。這似乎是Facebook請求設計中的一個「漏洞」。

但是,似乎有一項工作要清理請求。當您使用JavaScript發送請求,您可以訪問所有user_ids用戶的請求被髮送到:

{ 
    request: ‘request_id’ 
    to:[array of user_ids] 
} 

您可以緩存是一些預先設定的時間後,就刪除所有用戶的請求。

更新:2012年1月12日] 此bug已被接受,在這裏分配https://developers.facebook.com/bugs/202883726463009

更新:該錯誤已被標記爲設計

+0

感謝您的錯誤鏈接。我懷疑是這樣 –

0

不正是看到你在做什麼,這是很難知道,但這裏的一些可能的解決方案:

首先,你的應用程序將始終需要刪除的要求,不像老款的請求,應用程序負責用於清除一旦他們被接受的請求,並且他們不會被自動刪除,因爲用戶接受他們 - 這裏包括:https://developers.facebook.com/docs/reference/dialogs/requests/#deleting

您應該可以使用應用程序訪問令牌來刪除您的請求應用程序,無論您對收件人用戶擁有什麼權限(儘管基於上述描述,您應該可以使用用戶訪問令牌收件人):

如果您已啓用「高效」的請求遷移設置,刪除的格式爲 DELETE https://graph.facebook.com/ [<request_id>_<user_id>]?access_token=[USER or APP ACCESS TOKEN]

如果你還沒有,它將是格式

DELETE https://graph.facebook.com/ [request_id]?access_token=[USER OR APP ACCESS_TOKEN]

+0

謝謝艾吉。這些是我一直遵循的說明,並且我已經設法在純PHP環境中工作。儘管使用JS SDK(相同的圖端點+相同的訪問令牌)嘗試使用相同的DELETE api調用會導致上述消息中的錯誤。可能的錯誤?你知道有什麼方法可以解決我的第一個問題,並且在沒有用戶「安裝」我的應用的情況下刪除請求嗎?我無法將其用戶標識放在DELETE API調用中 –

+0

如果用戶尚未安裝您的應用程序,您必須使用應用程序訪問標識 - 此外,如果您無法在其中創建DELETE請求javascript可以發出一個GET請求,並將'method = delete'添加到調用中,並且API將它視爲DELETE請求 – Igy

0

1)您可以在用戶授權應用程序後刪除請求。否則,你將無法知道是誰被邀請的方式,因此請求ID

2)似乎您試圖刪除已經被刪除請求

+0

1)我認爲是這種情況。在這種情況下,我只需要讓用戶自己清理請求。 2)在我收到此錯誤時,請求未被刪除。如果我使用PHP SDK而不是JS SDK發出相同的請求,它會正常工作並且請求被刪除 –