2015-06-12 2 views
0

Все работало нормально до тех пор, пока пару дней назад я начал получать Несанкционированную ошибку при попытке получить токен доступа к гнезду. Я дважды проверял, и идентификатор клиента и секретный код клиента верны. Любые идеи о том, что может вызвать это?Несанкционированная ошибка при попытке получить токен доступа Nest

HttpWebRequest request = WebRequest.CreateHttp("https://api.home.nest.com/oauth2/access_token?"); 
var token = await request.GetValueFromRequest<NestToken>(string.Format(
    "client_id={0}&code={1}&client_secret={2}&grant_type=authorization_code", 
       CLIENTID, 
       code.Value, 
       CLIENTSECRET)); 

public async static Task<T> GetValueFromRequest<T>(this HttpWebRequest request, string postData = null) 
{ 
    T returnValue = default(T); 

    if (!string.IsNullOrEmpty(postData)) 
    { 
     byte[] requestBytes = Encoding.UTF8.GetBytes(postData); 

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

     using (var postStream = await request.GetRequestStreamAsync()) 
     { 
      await postStream.WriteAsync(requestBytes, 0, requestBytes.Length); 
     } 
    } 
    else 
    { 
     request.Method = "GET"; 
    } 

    var response = await request.GetResponseAsync(); 

    if (response != null) 
    { 
     using (var receiveStream = response.GetResponseStream()) 
     { 
      using (var reader = new StreamReader(receiveStream)) 
      { 
       var json = await reader.ReadToEndAsync(); 
        var serializer = new DataContractJsonSerializer(typeof(T)); 

       using (var tempStream = new MemoryStream(Encoding.UTF8.GetBytes(json))) 
       { 
        return (T)serializer.ReadObject(tempStream); 
       } 
      } 
     } 
    } 

    return returnValue; 
} 
+1

Hi Rohit, Я работаю над оболочкой .NET вокруг API REST REST. Я не вижу слишком много людей, использующих .NET, поэтому я решил поделиться своей работой: http://github.com/mitchdenny/birdhouse/ Я использую пакет Newtonsoft.Json для моей сериализации JSON/десериализация, и, похоже, она работает нормально, хотя в этом случае это звучит так, как будто это был сбой на стороне гнезда. –

+0

Довольно круто, не понимал, что это существовало. Я обязательно попробую! –

ответ

0

Пока я не могу дать ответ, я могу подтвердить то же самое происходит с моим приложением IOS в те же сроки.

Принимая мои данные о значении URL и почтовых сообщений, отлично работает с почтовым ящиком в хроме. Alamofire забрасывает ошибку 401, а также собственный быстрый тестовый код, такой как ваш.

Возможно, гнездо возможно изменило их переговоры по https?

+0

Я тоже получаю это с помощью своего приложения OS X. – rdougan

+0

До сих пор мне не удалось найти записи об изменениях на стороне Nest, но похоже, что они что-то изменили. Я работаю на том основании, что они внедрили новую архитектуру для поддержки их перехода на нижние кавычки и т. д. – DrDreMYI

+0

Я также могу подтвердить, что он работает нормально с помощью обычного запроса (используя Paw.app) - однако он не использует 'NSURLRequest'. – rdougan

Смежные вопросы