3

RedditAPIを使用してRedditユーザーのアカウントにアクセスしようとしています-APIページにリストされているPOSTログインエンドポイント。

私はこれを試しました:

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

しかし、それは間違ったパスワードを言いました(私は同じ資格情報でウェブサイトにログインしたので、何が間違っているのかわかりません):

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

質問:

  • Reddit APIを使用してRedditにログインする方法を知っている人はいますか?

  • 正しくログインするためにHTTPPostを介してクレデンシャルを渡す簡単な方法はありますか?

  • 最初のカールから無効なパスワードが表示されるのはなぜですか?

4

1 に答える 1

14

以下は、curl を使用して reddit にログインする方法の適切な例です。

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

渡すapi_type=jsonことで、reddit 固有の jquery ベースの出力ではなく、意味のある json 出力が得られます。

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

reddit は set-cookie ヘッダーも適切に使用することに注意してください。これにより、適切な http クライアント/ライブラリが後続のリクエストでセッションを利用できるようになります。

フォームパラメーターを適切に送信していないため、例は機能しませんでした。あなたがうまくいくかもしれないと思っていた例は、実際にはうまくいきませんでした。ログインに失敗した回数が多すぎるため、レート制限応答を受け取っていました。

于 2013-03-02T00:59:50.223 に答える