2011-09-15 3 views
5

ストーリーを提出するためのReddit APIのphpを使用すると、不正なcaptchaがエラーとして返されます。 私はapiを使ってログインでき、apermを使ってusermodとcaptchaを完全に取得できます。で、私が言うことができるものから https://github.com/reddit/reddit/wiki/APIPHPのReddit APIは、ストーリーを送信するための悪いcaptchaを返します

<?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

私はこの問題を自分自身で解決していることが分かりました。 APIのCAPTCHAのポイントは何ですか? – Kane

答えて

3

:reddit_sessionクッキーは、それが悪いキャプチャを返さ投稿してはいけません渡された場合 は、理想的には、誰かがこの..

参照リンク上で私にいくつかの光を当てることができますCAPTCHAはReddit APIで壊れています。彼らはもともと古いPyCAPTCHAを使っていて、migrating to reCAPTCHAでした。それ以来、を使用していて、githubの誰かが現在作業中です。issueがありました。彼はまた、解説/ソリューションを提供しました:

json(jqueryではありませんが)の結果には、> captchaが必要なときにcaptcha_idが含まれている必要があります。 captcha_idとは、followngのようなURLを完成させる部分を意味します。> http://www.reddit.com/captcha/(captcha_id).png

私が遭遇したユースケースは、 > api_type:jsonを使用しているapi。存在しないcaptchaが間違っていると私はうなずく通知されますが、> captcha_idを取得するにはhttp://www.reddit.com/api/new_captchaへのリクエストをしなければなりません。この最後のラウンドトリップは不要です。

あなたのredditボットのための新しいアカウントを作成して提出しようとすると、上記の問題は、固定されており、しかし、正しく動作しました:最近この質問につまずいた、まだその問題を持っている他の誰のために

5

あなたはbad_captchaエラーを受け取ります。新しいアカウントは、一定のカルマを得るまでキャプチャを提出しなければならないので、これはあなたが見ているエラーです。古いアカウントでリクエストを試してください。これで問題が解決するはずです。

+0

ありがとうございました。この修正を見つけるために永遠に私を連れて行った。 – DLeh

+0

あなたはキャプチャリンク画像を取得できないので、ユーザーはアプリ内で解決できるようにアプリに埋め込むことができますか? – cikatomo

関連する問題