2015-09-30 2 views
0

Как получить токен из DotNetOpenAuth OAuthAuthorizationServer образец с C#? Я запускаю образец, предоставленный в Github. Я хочу получить токен, пока безуспешно. Всегда получайте 400, плохой запрос. Запрос я отправка следующим образом:Как получить токен из DotNetOpenAuth OAuthAuthorizationServer с C#?

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

Прежде всего, необходимо установить переадресацию Ури и 2cnd вы уверены, что вы хотите отправить запрос на LOCALHOST? И ваша попытка поймать вещи не имеет никакого смысла - используйте метод response.ensuresuccess() в блоке try –

+0

Я установлю перенаправление uri, попробую еще раз. И да, я использую localhost только для целей тестирования. Спасибо. –

ответ

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); 
}