Facebook API - Durumunuzu silin

6 Cevap php

PHP, ben fb grafik API için bir silme göndermek için kıvırmak kullanıyorum - ve henüz ben şu hatayı alıyorum;

{"error":{"type":"GraphMethodException","message":"Unsupported delete request."}}

Ben kullanıyorum kodu;

$ch = curl_init("https://graph.facebook.com/" . $status_id . ""); 
curl_setopt($ch, CURLOPT_VERBOSE, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $query); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);  
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_CAINFO, NULL); 
curl_setopt($ch, CURLOPT_CAPATH, NULL); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); 

$result = curl_exec($ch); 
echo $result;

$ Sorgu erişim belirteci içerir.

6 Cevap

Sabit!

Sen silerken nesne kimliği kimliği prepend var:

DELETE https://graph.facebook.com/673509687_104812882909249?access_token={access_token} where 673509687 is my userID and 104812882909249 is the objectID

Hala bu mücadele herkes için, benim sorunu ben daha önce bu hataya neden olan PHP SDK'yı kullanarak yarattığı uygulama istekleri silmek çalışırken ne öğrendim.

(# 2) Geçersiz parametre: Vücut bir hata / uyarı mesajı. Title: Geçersiz parametre

Sorun aslında belirteci kullanılmıştır ediliyordu hangi erişim ile oldu; kullanıcı veya uygulama.

Ben üzerinde çalışıyordu belirli senaryo benim uygulamada bir kullanıcı (bir uygulama isteği kullanarak) bir arkadaş Facebook davet nerede oldu ama sonra o davet iptal etmek istiyor. Bu durumda ben daha önce oluşturulan Facebook uygulaması isteğini silmek istiyorum. Ancak, zaman içinde bu noktada, kullanıcı oturum açan uygulama isteği alıcı, ancak gönderen değildir.

Biri varsa PHP SDK koduna baktığımızda, otomatik olarak uygulama erişim belirteci üzerinde, kullanıcı erişim belirteci kullanır. Aslında, açıkça SDK uygulama belirteci almak için bir yol olarak görünmüyor.

Aşağıdaki kullanarak uygulama isteğini silmek için çalışırken ...

$ Facebook-> api ('/' $ fb_request_id, 'DELETE'.);

... Ve PHP SDK kullanıcı belirteci seçin icar, ben (# 2) Geçersiz parametre hata iletisi aldı. Ancak, elle format uygulama erişim belirteci (inşa halinde "$ APP_ID | $ app_secret" ve üçüncü parametre bir dizi anahtar olarak geçmek ...

$ Facebook-> api ('/' $ fb_request_id, 'delete', array ('access_token' => $ app_access_token).;

.. Sonra çağrı başarılı.

Yani, temelde geçerli kullanıcı app istek alıcı değilse uygulama istekleri silmek için uygulama erişim belirteci kullanmanız gerekir.

Ben bu aynı sorunu ile mücadele kimseye yardımcı olur umarım.

Ben biraz kodunuzu güncellenmiştir. (Eğer doğru yapılırsa "true" echo Should) İşte şu anda benim için çalışıyor budur.

Ayrıca bu Facebook.That 'ler üzerinden oluşturulan etkinlikleri silmez unutmayın neden sizin izinleri hatası alıyorum. Bu sadece uygulama yoluyla oluşturulan etkinlikleri siler ... (uygulama $ APP_ID, $ app_secret bağlı)

//First authenticate a token


$app_id = "APP ID GOES HERE";
$app_secret = "SECRET APP ID GOES HERE";
$my_url = "WHATEVER THIS PAGES NAME IS GOES HERE";  


//I'm not sure but I think REQUEST is still allowed....right? if not change it to GET/POST

$code = $_REQUEST["code"];

if(empty($code)) {
$auth_url = "http://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url)
. "&scope=create_event";
echo("<script>top.location.href='" . $auth_url . "'</script>");
}

$token_url = "https://graph.facebook.com/oauth/access_token?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url)
. "&client_secret=" . $app_secret
. "&code=" . $code;
$access_token = file_get_contents($token_url);




//Use TRUE and FALSE not 0 and 1's like you originally had it

//264853420218553 is the event id.

$ch = curl_init("https://graph.facebook.com/264853420218553?" . $access_token . ""); 
curl_setopt($ch, CURLOPT_VERBOSE, TRUE); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_HEADER, FALSE); 
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_POST, TRUE);
//curl_setopt($ch, CURLOPT_POSTFIELDS, $query); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, TRUE);  
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_CAINFO, NULL); 
curl_setopt($ch, CURLOPT_CAPATH, NULL); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);

$result = curl_exec($ch); 
echo $result;?>

Ben denemek için düşünebilirsiniz tek şey olduğunu

1) ile bir POST isteği yapmak İşe yarayıp yaramadığını görmek için "yöntemi = sil"

2) elle şey yanlış görünüyor olmadığını görmek için üretilen HTTP isteği bakmak - o zaman sorunu ortadan kaldırabilirsiniz

Bu sadece HTTP silme yöntemi, belirli nesne için desteklenmiyor demektir.

One option is to use Http POST and add method=delete to the parameter query. Make sure that your application has a publish_stream permission else you can never publish a feed. Permissions are done by Facebook.

Bu cevap hakkında:

Fixed! You have to prepend the userid to the object ID when deleting: DELETE https://graph.facebook.com/673509687_104812882909249?access_token={access_token} where 673509687 is my userID and 104812882909249 is the objectID

Örneğin PHP dilini kullanarak (app-erişim belirteci) ile sunucu üzerinde bir apprequest silmek çalıştığınızda yazık ki bu sadece bir kullanıcı accesstoken ile çalışmak ve olmayacaktır.

Eğer app-erişim belirteci kullanarak apprequests silinmesi için bir çözüm varsa bunu açıklayın. Yardımlarınız için teşekkürler!