2011-09-15 10 views
5

सबमिट करने के लिए खराब कैप्चा रिटर्न देता है एक कहानी सबमिट करने के लिए रेडडिट एपीआई के लिए PHP का उपयोग खराब कैप्चा त्रुटि के रूप में देता है। मैं एपीआई का उपयोग करके लॉगिन करने में सक्षम हूं और एपीआई का उपयोग कर पूरी तरह से वर्मचाप और कैप्चा प्राप्त कर सकता हूं। आदर्श रूप में अगर reddit_session कुकी पारित हो जाता है तो उसे पोस्ट और नहीं लौटना चाहिए बुरा कैप्चा कोई मुझे कुछ प्रकाश इस पर बहाया सकते हैं ..पीएचपी में रेडडिट एपीआई स्टोरी

संदर्भ लिंक: https://github.com/reddit/reddit/wiki/API

<?php 
$user = ""; 
$passwd = ""; 
$url = "http://www.reddit.com/api/login/".$user; 

$r = new HttpRequest($url, HttpRequest::METH_POST); 
$r->addPostFields(array('api_type' => 'json', 'user' => $user, 'passwd' => $passwd)); 

try { 
    $send = $r->send(); 
    $userinfo = $send->getBody(); 
} catch (HttpException $ex) { 
    echo $ex; 
} 

$arr = json_decode($userinfo,true); 

$modhash = $arr['json']['data']['modhash']; 
$reddit_session = $arr['json']['data']['cookie']; 

$post = array('uh'=>$modhash, 
       'kind'=>'link', 
       'url'=>'yourlink.com', 
       'sr'=>'funny', 
       'title'=>'omog-asdfasf', 
       'id'=>'newlink', 
       'r'=>'funnyier',     
       'renderstyle'=> 'html'    
       ); 


$url = "http://www.reddit.com/api/submit"; 

// Upvote RoboHobo's comment :) 
// Add user cookie data 
$r->addCookies(array("reddit_session" => $reddit_session)); 
// Set URL to vote 
$r->setUrl($url); 
// Add vote information, found at http://wiki.github.com/talklittle/reddit-is-fun/api-all-functions 
$r->setPostFields($post); 
// Send request blindly 


try { 
    $userinfo = $r->send(); 
} catch (HttpException $ex) { 
    echo $ex; 
} 
pre($userinfo); 
exit; 

function pre($r){ 
echo "<pre />"; 
print_r($r); 
} 
?> 
+0

मुझे इस समस्या का पता होना अच्छा लगेगा, मुझे एक ही समस्या है। एपीआई में कैप्चा का क्या मतलब है? – Kane

उत्तर

3
मैं क्या बता सकते हैं

, पर पल कैप्चा Reddit एपीआई में टूट गया है। वे मूल रूप से पुरानी पिकैप्चा का उपयोग कर रहे थे और migrating to reCAPTCHA थे। तब से, api_type:json का उपयोग कर रहा है जिसमें एक काम है और वर्तमान में गीथब पर कोई व्यक्ति इसे काम कर रहा है। उन्होंने एक स्पष्टीकरण/समाधान भी दिया:

काफी आसानी से, जेसन (हालांकि jquery नहीं) परिणाम में कैप्चा की आवश्यकता होने पर कैप्चा_आईड होना चाहिए। कैप्चा_आईड द्वारा मेरा मतलब है कि फॉलोऑन जैसे यूआरएल को पूरा करने का हिस्सा:> http://www.reddit.com/captcha/ (captcha_id) .png

उपयोग का मामला सामने आया जब मैं एक कहानी प्रस्तुत करने की कोशिश कर रहा था एपीआई का उपयोग> api_type: जेसन। मुझे अच्छी तरह से अधिसूचित किया गया है कि मेरा अस्तित्व कैप्चा गलत है, हालांकि,>>> कैप्चा_आईडी प्राप्त करने के लिए मुझे http://www.reddit.com/api/new_captcha पर अनुरोध करना होगा। यह अंतिम दौर यात्रा अनावश्यक लगती है।

5

किसी और कि हाल ही में इस सवाल पर ठोकर खाई है और अभी भी इस मुद्दे चल रहा है के लिए:

ऊपर समस्या का समाधान हो गया था और फिर भी ठीक से काम करता है कि आप अपने reddit बॉट के लिए एक नया खाता बनाया है और एक सबमिट करने का प्रयास करता है, तो कहानी आप एक bad_captcha त्रुटि प्राप्त करेंगे। नए खातों को कैप्चा जमा करना होता है जब तक उन्हें कुछ निश्चित कर्म प्राप्त नहीं होता है, इसलिए यह वह त्रुटि है जिसे आप देख रहे हैं। पुराने खाते से अनुरोध आज़माएं और इससे आपकी समस्या हल होनी चाहिए।

+0

बहुत बहुत धन्यवाद। इस फिक्स को खोजने के लिए मुझे हमेशा के लिए ले लिया। – DLeh

+0

क्या आप कह रहे हैं कि आप कैप्चा लिंक छवि नहीं प्राप्त कर सकते हैं ताकि हम इसे ऐप में एम्बेड कर सकें ताकि उपयोगकर्ता ऐप के अंदर हल कर सके? – cikatomo