2010-05-18 15 views
6

PHP में, मैं fb ग्राफ एपीआई को हटाने के लिए कर्ल का उपयोग कर रहा हूं - और फिर भी मुझे निम्न त्रुटि मिल रही है;फेसबुक एपीआई - स्थिति हटाएं

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

मैं जिस कोड का उपयोग कर रहा हूं वह है;

$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; 

$ क्वेरी में टोकन पहुंच है।

+0

"status_id" क्या है? एक फ़ीड प्रविष्टि? क्या यह वैध है? प्रश्न में स्थिति की आईडी – marcgg

+0

। और हाँ यह मान्य है - इसे एक आईडी आईडी पुल के साथ चेक किया है जो स्थिति देता है। –

+0

क्या आपने अपनी समस्या हल की है? जेम्स हार्टविग ने कहा कि उन्हें एक समाधान मिला है, लेकिन इसे उत्तर के रूप में चिह्नित नहीं किया गया है (और वास्तव में मेरे लिए काम नहीं करता) – Sam

उत्तर

11

फिक्स्ड!

आप जब को हटाने ऑब्जेक्ट ID को उपयोगकर्ता आईडी पहले जोड़ें करने के लिए है:

DELETE https://graph.facebook.com/673509687_104812882909249?access_token= {ACCESS_TOKEN} जहां 673,509,687 मेरी userID और 104812882909249 है objectId

+4

+1। एक क्रैपी एपीआई के लिए फेसबुक के लिए -1। – hiwaylon

+1

मेरा मानना ​​है कि user_id को object_id पर prefixed के बजाय प्रत्यय होना चाहिए। – Divick

0

केवल एक चीज मैं कोशिश करने के लिए सोच सकते हैं करने के लिए

1) के साथ एक पोस्ट अनुरोध करते हैं कि अगर काम करता है

2) मैन्युअल रूप से उत्पादित HTTP अनुरोध पर देखने को देखने के लिए देखने के लिए "विधि = हटाएँ" है अगर कुछ गलत दिखता है - तो आप समस्या को अलग कर सकते हैं

+0

हाय Thr4wn। मैंने विधि = हटाएं के साथ पोस्ट करने का प्रयास किया है लेकिन यह भी काम नहीं करता है। उपयोगकर्ता आईडी को प्रीपेड करने के लिए –

0

इसका मतलब यह है कि HTTP विशिष्ट विधि उस विशिष्ट ऑब्जेक्ट के लिए समर्थित नहीं है।

एक विकल्प एचटीपी पोस्ट का उपयोग करना है और पैरामीटर क्वेरी में विधि = हटाएं। सुनिश्चित करें कि आपके एप्लिकेशन में publish_stream अनुमति है और आप फ़ीड कभी प्रकाशित नहीं कर सकते हैं। फेसबुक द्वारा अनुमतियां की जाती हैं।

0

इस उत्तर के बारे में है:

फिक्स्ड! आप जब को हटाने ऑब्जेक्ट ID को उपयोगकर्ता आईडी पहले जोड़ें करने के लिए है: DELETE https://graph.facebook.com/673509687_104812882909249?access_token= {ACCESS_TOKEN} जहां 673,509,687 मेरी userID और 104812882909249 objectId

दुर्भाग्य से यह केवल एक उपयोगकर्ता के accesstoken और नहीं जब साथ काम करेंगे है आप उदाहरण के लिए PHP भाषा का उपयोग कर सर्वर पर (एप-एक्सेस-टोकन के साथ) पर एक डिस्क को हटाने का प्रयास करें।

यदि आपके पास ऐप-एक्सेस-टोकन का उपयोग करके पूछताछ हटाने का समाधान है तो कृपया इसका वर्णन करें। आपकी सहायताके लिए धन्यवाद!

+0

क्या आप ऐप-एक्सेस-टोकन के साथ उपयोगकर्ता का स्टेटस संदेश हटा सकते हैं? मैंने ऐसा नहीं सोचा था ... –

1

किसी के भी अभी भी इसके साथ संघर्ष करने के लिए, मुझे पता चला कि मेरा मुद्दा एप्लिकेशन अनुरोधों को हटाने का प्रयास कर रहा था जिसे मैंने पहले PHP एसडीके का उपयोग करके बनाया था, जिसके परिणामस्वरूप यह त्रुटि हुई थी।

(# 2) अमान्य पैरामीटर: त्रुटि/चेतावनी संदेश का बॉडी। शीर्षक है: अमान्य पैरामीटर

समस्या अनिवार्य रूप से उपयोग टोकन का उपयोग किया जा रहा था; उपयोगकर्ता या आवेदन।

मैं जिस विशिष्ट परिदृश्य पर काम कर रहा था वह था जहां मेरे आवेदन में उपयोगकर्ता ने एक मित्र फेसबुक (ऐप अनुरोध का उपयोग करके) आमंत्रित किया था, लेकिन फिर उस आमंत्रण को रद्द करना चाहता है। इस मामले में मैं फेसबुक पर ऐप अनुरोध को हटाना चाहता हूं जो पहले बनाया गया था। हालांकि, इस समय, लॉग इन उपयोगकर्ता ऐप अनुरोध प्राप्तकर्ता नहीं है, लेकिन प्रेषक।

PHP एसडीके कोड को देखते हुए, यह एप्लिकेशन एक्सेस टोकन पर स्वचालित रूप से उपयोगकर्ता पहुंच टोकन का उपयोग करता है। वास्तव में, एसडीके से स्पष्ट रूप से एप्लिकेशन टोकन प्राप्त करने का कोई तरीका नहीं दिखता है।

एप्लिकेशन अनुरोध के बाद का उपयोग कर ('/'.$ fb_request_id,' नष्ट ') को हटाने के लिए ...

$ फेसबुक> एपीआई का प्रयास कर रहा;

... और PHP एसडीके को उपयोगकर्ता टोकन चुनने देना, मुझे (# 2) अमान्य पैरामीटर त्रुटि संदेश प्राप्त हुआ। हालांकि, अगर मैं मैन्युअल रूप से एप्लिकेशन एक्सेस टोकन (जहां प्रारूप "$ app_id | $ app_secret" है और इसे तीसरे पैरामीटर में सरणी कुंजी के रूप में पास करता है ...

$ facebook-> api ('/'। $ fb_request_id, 'हटाएं' सरणी ('ACCESS_TOKEN' => $ app_access_token);

कॉल ..then सफल होता है

तो, अनिवार्य रूप से आप आवेदन पहुँच टोकन उपयोग करने देता है अनुरोध करता है, तो हटाने की आवश्यकता। वर्तमान उपयोगकर्ता ऐप अनुरोध प्राप्तकर्ता नहीं है।

मुझे आशा है कि इससे किसी और मुद्दे को किसी भी समस्या से जूझने में मदद मिलेगी।

1

मैंने आपके कोड को थोड़ा सा संशोधित किया है। (अगर सही तरीके से किया गया तो "सत्य" गूंजना चाहिए) वर्तमान में मेरे लिए क्या काम कर रहा है।

यह भी ध्यान दें कि यह फेसबुक के माध्यम से बनाई गई घटनाओं को मिटा नहीं देता है। यही कारण है कि आपको अनुमति त्रुटियां प्राप्त हो रही हैं। यह केवल आपके आवेदन के माध्यम से बनाई गई घटनाओं को मिटा देता है ... ($ app_id, $ app_secret से जुड़ा आवेदन)

//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;?> 
+0

कृपया उपरोक्त कोड में एक बग नोट करें: 'CURLOPT_SSL_VERIFYHOST' एक पूर्णांक पैरामीटर होना चाहिए, और इसे 2 (डिफ़ॉल्ट) पर सेट किया जाना चाहिए। अधिक जानकारी के लिए http://www.php.net/manual/en/function.curl-setopt.php देखें। यदि आप मान को 'सत्य' पर सेट करते हैं, तो आप वास्तव में मेजबान जांच अक्षम कर रहे हैं, और इसलिए एमआईटीएम हमलों को सक्षम कर रहे हैं! – simpleigh

संबंधित मुद्दे