0

私は現在 y-hack にいて、アプリをハッキングしています。これまでサーバーにアプリをデプロイしたことはありませんでしたが、AWS EC2 インスタンスを作成し、startssl で CA 証明書を作成しました。そして今、DropBox API を使用して情報を取得しようとしています。

私のコードはローカル マシンでは正常に動作しますが、サーバーでコードを使用しようとすると 400 Bad Request エラーが発生し続けます。私のオプションは次のようになります。

var options = {
    key: fs.readFileSync('./cred/ssl.key'),
    cert: fs.readFileSync('./cred/ssl.crt'),
    ca: [fs.readFileSync('./cred/sub.class1.server.ca.pem')]
}

そして、私のサーバーは次のようになります。

https.createServer(options,app).listen(443, function(){
  console.log('Express server listening on port ' + 443);
});

認証しようとすると、組み込みのドロップボックス JavaScript クライアントを使用して次のように呼び出します。

var server = new Dropbox.AuthDriver.NodeServer(500);

すべてのポートが開いており、HTTPS で Web サイトにアクセスできます。SSL 証明書に問題がないことを確認しましたが、マイクロ インスタンスから DropBox にリクエストを送信するたびに、ページがハングします。私は試した:

curl https://www.dropbox.com/1/oauth2/authorize?client_id={client_id}&redirect_uri=https%3A%2F%2Fsimplestever.com%3A8912%2Foauth_callback/&response_type=code/&state={state}

そして、私はこれを応答として取得します(フォーマットを許してください):

エラー (400)

お使いのアプリが不適切なリクエストを送信したようです。このエラーをアプリの開発者に報告する場合は、以下の情報を含めてください。


開発者向けの詳細 Missing "response_type".

===================== 私はこれに非常に慣れておらず、今日だけ独学しました。以前は curl を使用したことがありません...リクエストでこれらの問題が発生した理由を誰かが知っている場合は、非常に役立ちます! 乾杯!

編集:エスケープされた文字でカールしたところ、うまくいきました!...これは、クライアントが壊れている可能性があることを意味しますか? これをクエリに置き換えて、csrf 変数のことは今のところ忘れて、それが機能するかどうかを確認します。

Edit2:リクエストモジュールを使用して認証リクエストを作成し、それが機能しました! ちょうどいい時間に。乾杯!

Edit3: 私が模倣したコードにクレジットを与える必要があります。https://github.com/smarx/othw/blob/master/Node.js/app.js

4

1 に答える 1

0

curlコマンドの問題は、アンパサンドがエスケープされていないことだと思います。URL 全体を引用符で囲んでみてください。

于 2013-11-09T18:55:50.197 に答える