2017-03-22 4 views
0

TradeKingを使用してアプリケーションを設定するときに、あなたが得る:。TradeKing(または任意の事前認可API)をアクセスするとC#/。NET

  • Aコンシューマーキー
  • Aコンシューマーシークレット
  • AのOauthトークンAのOauthトークンシークレット

  • TradeKingのAPIにアクセスするために、それは明らかにall you need to build personal applicationsです。しかし、私はC#/ .NETで正しいOauthヘッダーを構築する方法を見つけることができません。

    例はかなり簡単です。like this Node.js sample。 Node.js用のOauthライブラリは、適切なヘッダを生成します。いくつかの他の言語でも同様のサンプルがありますが、それらはすべて提供されたキーとトークンから適切なヘッダーを構築するライブラリを持つようです。 C#/ .NETでこれを行うためのライブラリが見つかりません。

    私はin this SO question that builds the headers from scratchに何が起こっているのかを頭に入れようとしていますが、かなり進歩しています。私はASP.NET Security repoを突っ込んでいます。なぜなら、彼らはどこかでこれを処理しなければならないからです。しかし私は私が探しているものを見つけることができません。

    .NETでこれらのキーからOauthヘッダーを生成する方法はありますか。

  • +0

    あなたはこれをチェックしましたか?http://deanhume.com/home/blogpost/a-simple-guide-to-using-oauth-with-c-/49 – Yordan

    +0

    @Yordan私は自分のウェブ検索でそれを見つけました、それを無視したので、[参照したコード](http://cropperplugins.codeplex.com/SourceControl/changeset/view/72088#Cropper.Plugins/TwitPic/OAuth.cs)は2010年のものであり、Codeplex 。しかし、いくつかの変更を加えれば、それを私のアプリに差し込むことができました。プッシュをありがとう。 – Shaun

    答えて

    0

    Oauth管理クラスがいくつか設定されているopen source library on CodePlexがあります。

    私はまだそれを通過し、必要でないものを取り除く必要がありますが、幸いにもそれはレポからの他のクラスに依存しません。私は私のプロジェクトに追加したら、接続をテストするためにはかなり簡単だった:

    public async Task<IActionResult> MakeRequest() 
    { 
        string result; 
        var oauth = new Oauth.Manager(); 
        // _tradeKing is a configuration object I set up to hold user secrets 
        oauth["consumer_key"] = _tradeKing.ConsumerKey; 
        oauth["consumer_secret"] = _tradeKing.ConsumerSecret; 
        oauth["token"] = _tradeKing.OauthToken; 
        oauth["token_secret"] = _tradeKing.OauthTokenSecret; 
    
        var url = "https://api.tradeking.com/v1/accounts.json"; 
        var authzHeader = oauth.GenerateAuthzHeader(url, "GET"); 
        var request = (HttpWebRequest)WebRequest.Create(url); 
        request.Method = "GET"; 
        request.Headers["Authorization"] = authzHeader; 
        var response = await request.GetResponseAsync(); 
        using (var reader = new StreamReader(response.GetResponseStream())) 
        { 
         result = reader.ReadToEnd(); 
        } 
    
        return Content(result); 
    } 
    

    this SO postからそれを使用する方法についていくつかのより多くの命令があります。

    関連する問題