2011-09-15 12 views
5

Sử dụng php cho Reddit api để gửi câu chuyện trả về hình ảnh xác thực không hợp lệ. Tôi có thể đăng nhập bằng cách sử dụng api và nhận được usermod và captcha hoàn hảo bằng cách sử dụng api. Lý tưởng nhất nếu cookie reddit_session được thông qua nó nên đăng và không quay trở lại hình ảnh xác thực xấu ai đó có thể đổ cho tôi một số ánh sáng về vấn đề này .. liên kếtReddit API trong php trả về hình ảnh xác thực không hợp lệ để gửi câu chuyện

tham khảo: 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

Tôi muốn biết câu trả lời cho điều này, có cùng một vấn đề với bản thân mình. Điểm CAPTCHA trong API là gì? – Kane

Trả lời

3

Từ những gì tôi có thể nói, tại thời điểm CAPTCHA bị hỏng trong API Reddit. Ban đầu họ sử dụng PyCAPTCHA đã lỗi thời và là migrating to reCAPTCHA. Kể từ đó, đã có issue bằng cách sử dụng api_type:json có công việc xung quanh và ai đó trên github hiện đang làm việc đó. Ông cũng đưa ra giải thích/giải pháp:

Rất đơn giản, kết quả json (mặc dù không phải jquery) phải chứa captcha_id khi bắt buộc phải có captcha. Bởi captcha_id Tôi có nghĩa là một phần để hoàn thành một url như followng:> http://www.reddit.com/captcha/ (captcha_id) .png

Trường hợp sử dụng tôi gặp phải là khi cố gắng gửi một câu chuyện qua api sử dụng> api_type: json. Tôi được thông báo độc đáo rằng hình ảnh xác thực không tồn tại của tôi không chính xác, tuy nhiên, tôi> sau đó phải gửi yêu cầu đến http://www.reddit.com/api/new_captcha để nhận được> captcha_id. Chuyến đi khứ hồi này dường như không cần thiết.

5

Đối với bất cứ ai khác mà vấp vào câu hỏi này thời gian gần đây và vẫn còn có vấn đề rằng:

Vấn đề trên đã được cố định và hoạt động chính xác tuy nhiên nếu bạn đã tạo một tài khoản mới cho bot reddit bạn và cố gắng nộp bạn sẽ nhận được một lỗi bad_captcha. Tài khoản mới phải gửi captchas cho đến khi họ đạt được một số tiền nhất định của nghiệp nên đây là lỗi bạn đang thấy. Hãy thử yêu cầu với một tài khoản cũ hơn và điều này sẽ giải quyết vấn đề của bạn.

+0

Cảm ơn bạn rất nhiều. Đã cho tôi mãi mãi để tìm sửa lỗi này. – DLeh

+0

Bạn có nói rằng bạn không thể có được hình ảnh liên kết hình ảnh xác thực để chúng tôi có thể nhúng nó vào ứng dụng để người dùng có thể giải quyết bên trong ứng dụng không? – cikatomo

Các vấn đề liên quan