2013-12-16 3 views
1

У меня довольно длинный код для загрузки в imgur, попытался проверить его, получил некоторые ошибки, исправил их. (Также при помощи этого сайта ОФК.) Но теперь я получаю сообщение об ошибке 400.Ошибка Imgur 400 Client.uploadString

Это часть кода, а также, где это происходит

public static ImgurToken GetToken(string clientId, string clientSecret, string pin) 
     { 
      string Url = "https://api.imgur.com/oauth2/token/"; 
      string DataTemplate = "client_id={0}&client_secret={1}&grant_type=pin&pin={2}"; 
      string Data = String.Format(DataTemplate, clientId, clientSecret, pin); 

      using (WebClient Client = new WebClient()) 
      { 
       string ApiResponse = Client.UploadString(Url, Data); //Error 400 
       var Deserializer = new JavaScriptSerializer(); 
       var Response = Deserializer.DeserializeObject(ApiResponse) as Dictionary<string, object>; 

       return new ImgurToken() 
       { 
        AccessToken = Convert.ToString(Response["access_token"]), 
        RefreshToken = Convert.ToString(Response["refresh_token"]) 
       }; 
      } 
     } 

Я думаю, что я сделал DATA и Правильно? Он также указывает его там на веб-сайте API Imgur.

EDIT: Только что заметил, моя булавка пуста. Это правильно?
EDIT 2: Я проверил немного, мой ClientSecret отображается с красным текстом, но я уверен, что это правильно.

GetPin:

public static string GetPin(string clientId, string clientSecret) 
     { 
      string Pin = String.Empty; 
      string OAuthUrlTemplate = "https://api.imgur.com/oauth2/authorize?client_id={0}&response_type={1}&state={2}"; 
      string RequestUrl = String.Format(OAuthUrlTemplate, clientId, "pin", "blah"); 
      return Pin; 
     } 

ответ

1

В imgur documentation, URL-адрес не имеет заднюю /. Измените его на https://api.imgur.com/oauth2/token, чтобы быть уверенным.

Кроме того, вам может потребоваться URL-адрес кодировки строки Data. Вы можете использовать System.Web.HttpUtility.UrlEncode() для этого.

http 400 error обычно возвращается, когда запрос имеет плохой синтаксис, возможно, ваш недостающий pin. Просто убедитесь, что контакт, который вы получаете от пользователя, добавлен в строку Data, но не пустой или пустой.

+0

Что такое? вместо /. Он ничего не делает, что я вижу. Кроме того, я добавил класс GetKey, так как вы можете видеть, что у него есть String Pin, который пуст. Можете ли вы что-нибудь сделать с этим? – Stepepper

+0

@Stepepper ах, теперь я понимаю, я обновил свой ответ –

+0

Где я могу поместить HttpUtility? – Stepepper