2013-02-21 2 views
3

API 페이지에 Reddit API - POST login Endpoint을 사용하여 Reddit 사용자 계정에 액세스하려고합니다. 이를Reddit의 API를 사용하여 로그인하는 방법은 무엇입니까?

HTTP/1.1 200 OK 
Content-Type: application/json; charset=UTF-8 
{ 
    "jquery": 
      [[0, 1, "call", ["body"]], [1, 2, "attr", "find"], 
       [2, 3, "call", [".status"]], [3, 4, "attr", "hide"], 
       [4, 5, "call", []], [5, 6, "attr", "html"], 
       [6, 7, "call", [""]], [7, 8, "attr", "end"], 
       [8, 9, "call", []], [0, 10, "attr", "find"], 
       [10, 11, "call", [".error.WRONG_PASSWORD.field-passwd"]], 
       [11, 12, "attr", "show"], [12, 13, "call", []], 
       [13, 14, "attr", "text"], [14, 15, "call", ["invalid password"]], 
       [15, 16, "attr", "end"], [16, 17, "call", []]] 
} 

을하지만 :

나는이 시도 :

curl -i -X POST -d '{"user":"myusername", "passwd":"mypassword", "rem":"true" }' http://www.reddit.com/api/login 

을하지만 잘못된 암호 (내가 잘못이 무엇인지 알 수 없도록 저도 같은 자격 증명을 사용하여 웹 사이트에 로그인)했다 작동 :

curl -i -c Cookie.txt -d '{"user":"myusername", "passwd":"mypassword" , "rem":"true"}' http://www.reddit.com/api/login 

수익률 :

{ 
    "jquery": 
       [[0, 1, "call", ["body"]], 
       [1, 2, "attr", "find"], 
       [2, 3, "call", [".status"]], 
       [3, 4, "attr", "hide"], 
       [4, 5, "call", []], 
       [5, 6, "attr", "html"], 
       [6, 7, "call", [""]], 
       [7, 8, "attr", "end"], 
       [8, 9, "call", []], 
       [0, 10, "attr", "find"], 
       [10, 11, "call", [".error.RATELIMIT.field-vdelay"]], 
       [11, 12, "attr", "show"], 
       [12, 13, "call", []], 
       [13, 14, "attr", "text"], 
       [14, 15, "call", 
       ["you are doing that too much. try again in 4 minutes."]], 
       [15, 16, "attr", "end"], [16, 17, "call", []]] 
} 

이 또한 잘 작동 :

curl -b Cookie.txt http://www.reddit.com/api/me.json 

질문 :

  • 사람이 레딧 API를 사용하여 레딧에 로그인하는 방법을 알고 있나요?

  • HTTP 게시물을 통해 자격 증명을 전달하는 쉬운 방법이 있습니까?

  • 왜 내 머리말에서 잘못된 암호가 표시됩니까?

답변

13

다음 레딧에 로그인 컬 사용하는 방법의 적절한 예입니다 api_type=json를 전달하여

curl -duser=USERNAME -dpasswd=PASSWORD -dapi_type=json https://ssl.reddit.com/api/login 

당신은 의미있는 JSON 출력보다는 레딧 특정 JQuery와 기반 출력을 얻을. 적절한 HTTP 클라이언트/라이브러리가 후속 요청에 대한 세션을 활용할 수 있도록 레딧도 제대로 설정 - 쿠키 헤더를 사용하는

{"json": {"errors": [], 
      "data": {"modhash": "<REMOVED>", 
        "cookie": "<REMOVED>"} 
     } 
} 

참고.

양식 매개 변수를 제대로 보내지 않아 예제가 작동하지 않았습니다. 당신이 생각했을지도 모르는 예제는 실제로 그렇게하지 않았습니다. 너무 많은 시간 동안 로그인하지 못했다는 속도 제한 응답을 받았습니다.

+0

감사합니다. bboe! 이 곱슬 머리 명령은 modhash를 반환하기 때문에 더 좋습니다. –

관련 문제