OAuth The remote server returned an error: (400) Bad Request

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

strelec
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 28.02.2009 (Сб) 22:04

OAuth The remote server returned an error: (400) Bad Request

Сообщение strelec » 10.12.2014 (Ср) 13:31

доброго времени суток всем.
я играю в одну игру по названием world of warcraft,есть необходимость сделать GUILD сайт
пишу на mvc c#.
есть необходимость применят OAuth чтобы авторизация происходило через battle.net.
прочитал что из себя представляет OAuth на habrahabr и еще много документации по этой теме.
сам документация по battle.net-у находится тут https://dev.battle.net

есть один запрос каторый дает код авторизации и есть второй запрос который дает токен
1. запрос GET после авторизации отправляет мне код авторизации все хорошо все нормально
2. запрос POST который должен вернут мне токен выдает ошибку =(
все ниже коды который я напишу они тестовые
Код: Выделить всё
String client_id="7arkdj2n2t6jj2z5cj2t3cbze3f8jyxf";
String client_secret="Ny5UKHd4zcFppqSUwjrxeU9ME7fAXrmY";
Uri TokenEndpoint = new Uri("https://eu.battle.net/oauth/token");
private const string AuthEndpoint = "https://eu.battle.net/oauth/authorize";


Код: Выделить всё
http://eu.battle.net/oauth/authorize?client_id=7arkdj2n2t6jj2z5cj2t3cbze3f8jyxf&redirect_uri=https://grandtrade.ge/BattleNetAuth/Auth&response_type=code&state=8055100&scope=wow.profile


клиент отправляется по этому адресу его спрашивает логин пасс после пере-направляется на мой сайт

Код: Выделить всё
https://grandtrade.ge/BattleNetAuth/Auth?code=nanqwjcwwk9ptwe3bj7nbxu6&state=8055100

AuthCode=nanqwjcwwk9ptwe3bj7nbxu6;

---------------------------------------------------

Код: Выделить всё
string Data="grant_type=authorization_code&authorization_code=nanqwjcwwk9ptwe3bj7nbxu6&redirect_uri=https://grandtrade.ge/BattleNetAuth/Token&scope=wow.profile&client_id=7arkdj2n2t6jj2z5cj2t3cbze3f8jyxf&client_secret=Ny5UKHd4zcFppqSUwjrxeU9ME7fAXrmY";
String Signature=FromBase64Encode(client_id, client_secret);
String Token=PostURL(TokenEndpoint .ToString(),Data,Signature)


после этого вызова выдает ошибку The remote server returned an error: (400) Bad Request.
потом посмотрел через Fiddler там в
TextView ={"error":"invalid_grant","error_description":"Authorization code is invalid"}
Auth=No Authorization Header is present.

если я убираю
Код: Выделить всё
Request.ContentLength = BinData.Length;

TextView ={"error":"invalid_grant","error_description":"Authorization code is invalid"}
Auth=Authorization Header is present: Basic N2Fya2RqMm4ydDZqajJ6NWNqMnQzY2J6ZTNmOGp5eGY6Tnk1VUtIZDR6Y0ZwcHFTVXdqcnhlVTlNRTdmQVhybVk=
Decoded Username:Password= 7arkdj2n2t6jj2z5cj2t3cbze3f8jyxf:Ny5UKHd4zcFppqSUwjrxeU9ME7fAXrmY


Код: Выделить всё
public string PostURL(string URL, string data, string signature = "") {
string result;
try {
HttpWebRequest Request = (HttpWebRequest)HttpWebRequest.Create(URL);
Request.PreAuthenticate = true;
byte[] BinData = System.Text.Encoding.UTF8.GetBytes(data);
Request.Method = WebRequestMethods.Http.Post;
Request.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";
Request.ContentLength = BinData.Length;
Request.GetRequestStream().Write(BinData, 0, BinData.Length);
Request.Headers.Add("Authorization", signature);
HttpWebResponse Response = (HttpWebResponse)Request.GetResponse();
StreamReader Reader = new StreamReader(Response.GetResponseStream(), Encoding.GetEncoding(1251));
string redirect = Response.ResponseUri.ToString();
result = Reader.ReadToEnd();

} catch (Exception ex) {
return ex.Message;
}
return result;

}
public string FromBase64Encode(string clientid, string secret) {
string result;
string temp = clientid + ":" + secret;
byte[] b = System.Text.Encoding.Default.GetBytes(temp);
result = "Basic " + Convert.ToBase64String(b);
return result;
}


кто чем может помочь помогите,заранее благодарен

strelec
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 28.02.2009 (Сб) 22:04

Re: OAuth The remote server returned an error: (400) Bad Req

Сообщение strelec » 11.12.2014 (Чт) 17:11

сам разобрался Тему можно закрыть


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15

    TopList  
cron