0

oAuth 2.0 を使用する API に対してコンソール アプリを承認しようとしています。DotNetOpenAuth を試しましたが成功しませんでした。

最初のステップは認証コードを取得することです。これは私が持っているものですが、ステップ 2 に進むための認証コードが見つかりません (ユーザー ID とユーザー パスワードを使用した事前定義された認証コードを使用した認証)。ドキュメント https://sandbox-connect.spotware.com/draftref/GetStartAccounts.html#accountsから次の認証ヘッダーを使用しましたか?

応答で、認証コードを含むヘッダーを取得できません。これを解決するにはどうすればよいですか?

string sAuthUri = "https://sandbox-connect.spotware.com/oauth/v2/auth";
 string postData ="access_type=online&approval_prompt=auto&client_id=7_5az7pj935owsss8kgokcco84wc8osk0g0gksow0ow4s4ocwwgc&redirect_uri=http%3A%2F%2Fwww.spotware.com%2F&response_type=code&scope=accounts";

        string sTokenUri = "https://sandbox-connect.spotware.com/oauth/v2/token";

        var webRequest = (HttpWebRequest)WebRequest.Create(sAuthUri);

        webRequest.Method = "POST";
        webRequest.ContentType = "application/x-www-form-urlencoded";

        try
        {

            using (Stream s = webRequest.GetRequestStream())
            {
                using (StreamWriter sw = new StreamWriter(s))
                    sw.Write(postData.ToString());
            }

            using (WebResponse webResponse = webRequest.GetResponse())
            {
                using (var reader = new StreamReader(webResponse.GetResponseStream()))
                {
                    response = reader.ReadToEnd();
                }
            }

            var return = response; 
        }
        catch (Exception ex)
        {

        }
4

1 に答える 1

0

OAuth2 の認証コード フローを使用すると、redirect_uri へのリダイレクトのクエリ文字列にコードが含まれている必要があります。

問題は call メソッド (GET である必要があります) にあり、postData は QueryString であり、redirect_uri はシステムの URL (スポットウェアではない) である必要があると思います。認証コードは、webResponse のクエリ文字列から取得する必要があります。

OAuth2 リクエストを簡単に実装するには、DotNetOpenAuth ライブラリを使用することをお勧めします。

于 2013-10-04T11:24:32.700 に答える