2013-04-10 32 views
7

OAuthダンスのステップの1つに、アクセストークンのコールバック経由で受け取ったコードの交換が含まれます。具体的には、Facebookのサーバー側の認証のために、以下のHTTPS GETリクエストは、レスポンスボディにアクセスコードを戻します。このよう接続しようとしたときnode.jsエラーECONNREFUSED

https://graph.facebook.com/oauth/access_token? 
    client_id=YOUR_APP_ID 
    &redirect_uri=YOUR_REDIRECT_URI 
    &client_secret=YOUR_APP_SECRET 
    &code=CODE_GENERATED_BY_FACEBOOK 

のNode.jsは、エラーを発生させ:

https.get(/**String | Object*/ options, function (res) { 
    res.setEncoding('utf8'); 

    res.on('data', function (data) { 
    // parse response body 
    }); 

}).on('error',function (e) { 
     Log.w(TAG, "Error requesting access_token", e); 
}).end(); 

エラーであります:

{ code: 'ECONNREFUSED', 
    errno: 'ECONNREFUSED', 
    syscall: 'connect' } 

コールはwget/curlでうまく動作するので、発信ファイアウォールルールなどの問題はありません。ノード要求の何が問題なのですか?

答えて

10

https証明書の確認に失敗しました。をrejectUnauthorized

:ノードのhttps.request()docsからtrueの場合、サーバー証明書が付属CAのリストと照合されます。検証が失敗した場合、 'error'イベントが生成されます。検証はHTTPリクエストが送信される前の接続レベルで行われます。デフォルトはtrueです。明示的に定めがない限り

、HTTP [S] [リクエスト|取得]。フラグをrejectUnauthorized含むtls.connect()オプションを無視するグローバルエージェントを使用します。 get(またはrequest)の呼び出しを変更する必要があります。

var options = require('url').parse(/**String*/ url); 
options.rejectUnauthorized = false; 
options.agent = new https.Agent(options); 

https.get(/**Object*/ options, function (res) { 
    // handle response & body 
}).on('error',function (e) { 
    // handle errors 
}).end(); 
+0

ありがとうございます。私も同様の問題に直面していました。 – Nate

+0

@Venkatあなたはあなた自身の(優れた)答えを受け入れることができると知っている:) – Ben

関連する問題