php中的RedditAPI为提交故事返回错误的验证码
使用php for Reddit api提交故事会返回错误的验证码。 我能够使用api登录,并使用api完美地获取usermod和captcha。 理想情况下,如果reddit_会话cookie通过,它应该发布,而不是返回错误的验证码。有人能告诉我一些关于这方面的信息吗 参考链接:php中的RedditAPI为提交故事返回错误的验证码,php,api,httprequest,reddit,Php,Api,Httprequest,Reddit,使用php for Reddit api提交故事会返回错误的验证码。 我能够使用api登录,并使用api完美地获取usermod和captcha。 理想情况下,如果reddit_会话cookie通过,它应该发布,而不是返回错误的验证码。有人能告诉我一些关于这方面的信息吗 参考链接: 据我所知,目前RedditAPI中的验证码被破坏。他们最初使用的是过时的PyCAPTCHA,现在已经过时了。从那时起,出现了一个使用api\u type:json的方法,它有一个解决方法,github上的某个人目前
据我所知,目前RedditAPI中的验证码被破坏。他们最初使用的是过时的PyCAPTCHA,现在已经过时了。从那时起,出现了一个使用api\u type:json
的方法,它有一个解决方法,github上的某个人目前正在使用它。他还提供了一个解释/解决方案:
很简单,当需要>验证码时,json(尽管不是jquery)结果应该包含验证码id。我所说的验证码id是指完成url的部分,如下图所示:>http://www.reddit.com/captcha/(验证码id).png
我遇到的用例是在尝试使用>api_type:json通过api提交故事时。我得到很好的通知,我不存在的验证码是不正确的,但是,我>然后必须向发出请求以获取>验证码id。最后一次往返似乎没有必要
对于最近偶然发现这个问题并仍有此问题的其他人:
上述问题已经修复,并且可以正常工作。但是,如果您为reddit机器人创建了一个新帐户,并尝试提交一个故事,您将收到一个错误的验证码。新帐户必须提交验证码,直到他们获得一定数量的业力,所以这就是你看到的错误。请使用旧帐户尝试该请求,这将解决您的问题。我很想知道答案,我自己也有同样的问题。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);
}
?>