2015-09-30 33 views
0

如何使用C#從DotNetOpenAuth OAuthAuthorizationServer示例獲取令牌? 我正在運行Github中提供的示例。 我想獲得令牌,現在不成功。總是得到400,不好的要求。 我發送請求如下:如何使用C#從DotNetOpenAuth OAuthAuthorizationServer示例獲取令牌?

var request = WebRequest.CreateHttp("http://localhost:50172/OAuth/Token"); 
     request.Method = "POST"; 
     request.ContentLength = 0; 
     request.Headers.Add("client_id", "sampleconsumer"); 
     request.Headers.Add("client_secret", "samplesecret"); 
     request.Headers.Add("grant_type", "authorization_code"); 
     request.Headers.Add("code", "teste"); 
     request.Headers.Add("redirect_uri", ""); 

     WebResponse response = null; 

     try 
     { 
      response = request.GetResponse(); 
     } 
     catch (Exception ex) 
     { 
      //400 - bad request here. 
     } 

我通過OAuth沒有技能,這是我第一次嘗試。我搜查了很多,但仍有點混亂。

+0

首先,你需要設置重定向URI和2cnd你確定要發送該請求到本地主機?而你的嘗試捕獲的東西沒有任何意義 - 在try塊 –

+0

中使用response.ensuresuccess()方法我將設置重定向uri再試一次。是的,我只使用本地主機進行測試。謝謝。 –

回答

1

不要爲ClientID和其他東西使用標頭,將其放入正文中。

這是我如何得到令牌與Client Credential Grant

using Newtonsoft.Json; 

... 
var url = "http://localhost:50172/OAuth/Token" 
var request = WebRequest.Create(url); 
request.Method = "POST"; 

string data = "grant_type=client_credentials&client_id=" + 
    "sampleconsumer&client_secret=samplesecret"; 
request.ContentType = "application/x-www-form-urlencoded"; 
byte[] dataStream = Encoding.UTF8.GetBytes(data); 
request.ContentLength = dataStream.Length; 
Stream newStream = request.GetRequestStream(); 

newStream.Write(dataStream, 0, dataStream.Length); 
newStream.Close(); 

WebResponse response = request.GetResponse(); 
using (var reader = new StreamReader(response.GetResponseStream())) 
{ 
    string result = reader.ReadToEnd(); 
    accessToken = JsonConvert.DeserializeObject<AccessToken>(result); 
}