1

utorrents Web API にアクセスしようとしています。トークン認証システムを使用しています。詳細はこちら

私のページのJavaScriptは

        <script>
            $.getJSON("http://XXX.XXX.XXX.XXX/lib/token.php", function(response) {
                var head = document.getElementsByTagName('head')[0];
                var script = document.createElement('script');
                script.type = 'text/javascript';
                //script.onreadystatechange = function () {
                //    if (this.readyState == 'complete') utorrent();
                //}
                //script.onload = utorrent();
                script.src = 'http://XXX.XXX.XXX.XXX:8080/gui/?list=1&token=' + response.token;
                head.appendChild(script);
            });
        </script>

PHPファイルからトークンを取得してチェーンに渡すだけで、トークンが渡され、毒されていないことを確認しました。私のPHPドキュメントは以下のとおりです

<?php
header('Content-type: text/json');
$token = file_get_contents('http://[username]:[password]@XXX.XXX.XXX.XXX:8080/gui/token.html');
$token = str_replace("<html><div id='token' style='display:none;'>", "", $token);
$token = str_replace("</div></html>", "", $token);
$response = array('token' => $token);
echo json_encode($response);
?>

これにより、トークン オブジェクト {token: "GMt3ryaJE64YpXGN75-RhSJg-4gOW8n8XfTGYk_ajpjNLNLisR3NSc8tn1EAAAAA"} の確認ができます

しかし、その後、リスト GET http://XXX.XXX.XXX.XXX:8080/gui/?list=1&token=GMt3ryaJE64YpXGN75-RhSJg-4gOW8n8XfTGYk_ajpjNLNLisR3NSc8tn1EAAAAA 400 (ERROR)を取得するときに 400 エラー コードを受け取ります。

どんな助け/考え/アイデアも大歓迎です

4

4 に答える 4

1

私の2セントを追加するだけです。

私は.NET MVCで同様の実装を行ってきました-あなたがしたようにトークンを取得できましたが、list = 1機能も機能せず、400の悪いリクエストコードを取得しました(あなたが見つけたように) .

私にとっての解決策: token.html 応答では、div にトークンがあり、ヘッダーにも GUIDがあります。

それを分解するには:

  1. uTorrent 資格情報を使用して token.html を呼び出す
  2. 応答コンテンツで、html を解析してトークンを取得します。
  3. 応答ヘッダーには、Set-Cookie次のような key の値があります

    Set-Cookie: GUID=<guid value>

  4. GUID=<guid value>送り返されるすべてのリクエストとトークンでこの値 ( ) を使用する必要がありましたが、うまくいきました。

ただし、これを行うためにPHPで実装が何であるかはわかりません:)

また、私が使用しているブラウザ(クロム)にはクロスドメインリクエストに関する厳格なガイドラインがあり、uTorrent$.getJSONが.$.AjaxJSONP

お役に立てれば!

于 2013-07-16T05:58:27.057 に答える
0

クエリ パラメータの順序を変更してみましたか?

例えば:http://localhost:8080/gui/?token=<token_uuid>&list=1

参考:https ://github.com/bittorrent/webui/wiki/TokenSystem#examples


更新 Pythonでutorrentクライアント用のXMPPBotを作成しようとして、同様の問題に遭遇しました。

@mtbennettは正しかった。セッション情報も保存する必要があります。

token.htmlからの応答を受け取ったら、Cookie 情報も取得します。通常、GUIDsessionsの 2 つのパラメーターがあります。後続のすべてのリクエスト (List API、Getfiles API など) のヘッダーにそれらを配置する必要があります。

これで問題が解決するはずです。

于 2014-01-26T05:49:35.297 に答える