2014-03-24 26 views
0

用戶發送了應用程序請求(使用本機fb.ui:apprequest)。當他的朋友打開通知(「XXX邀請您APP」)的URL看起來像這樣:FB Canvas應用程序:獲取請求ID

https://apps.facebook.com/app_name/?fb_source=notification& 
    request_ids=THE_REQUEST_ID&ref=notif&app_request_type=user_to_user& 
    notif_t=app_request 

在這個頁面上,我的網頁是一個iframe內顯示。

以前,我可以簡單地叫:$_GET['request_ids']我的頁面(iframe的內部)上得到REQUEST_ID (爲什麼,因爲我需要跟蹤誰發送了邀請?)

但是,這不再有效。我已經嘗試了幾乎所有的東西。

根據facebook文檔,我使用的以前的解決方案是正確的。請參閱: https://developers.facebook.com/docs/games/requests#deleting(滾動一點向下,PHP的例子)

擁有Facebook取消了這一功能?那會很難過,我想/不希望!

的人都有過類似的問題,(所有建議的解決方案,它不再工作):

是唯一的解決方案真正傳遞inviters user_id? (如Retrieve User ID of Facebook App Invitor中所建議的)。如果是這樣,那麼我可以在用戶點擊通知時檢索它嗎?

編輯:

我也曾嘗試使用:exit(print_r($facebook->getSignedRequest(), TRUE)); - 它輸出:

algorithm => HMAC-SHA256 
issued_at => 1395696960 
user => 
    country => dk 
    locale => da_DK 
    age => 
     min => 21 
user_id => the_user_id (ONLY WHEN APP HAS ALREADY BEEN AUTHED IT SEEMS) 

關閉,但沒有雪茄。

+1

這是做這件事的正確方式,我不知道有任何改變的消息。然而,Facebook正在爲頁面推出一個新的「佈局」(沒有什麼太戲劇化的,但有一點小小的變化),我已經看到有人抱怨與頁面標籤應用程序類似的問題和'app_data '參數沒有被正確地傳遞......所以我的猜測是,他們可能在這個過程中搞砸了一些東西。我建議打開一個錯誤報告:https://developers.facebook.com/x/bugs/trending/ – CBroe

+0

謝謝。我填寫了一個bugreport! – FooBar

回答

0

我一直在尋找這個解決方案很長一段時間,我可以得到的最好的方法是對/me/apprequests進行API調用 - 它將返回來自應用程序的所有請求。

我知道你仍然無法弄清楚你點擊哪一個(如果你收到了多個邀請),但它是先行了一步,直到FB對其進行排序的事情......

簡單的JS例如:

FB.api('/me/apprequests', function(r){ 
    if (r && r.data) { 
     for (var i = 0; i < r.data.length; i++) { 
      var id = r.data[i].id.split('_')[0]; // this is the request id 
      console.log(id, r.data[i]); 
     }; 
    } 
}) 
0

我最近有同樣的問題。但問題不在於臉書。這實際上是我們的Nginx服務器上的配置問題。

我們在根頁面上設置了重定向,它刪除了facebook傳遞給畫布應用程序的所有cgi參數。修復Nginx配置後,一切都按預期工作。

相關問題