2016-01-05 3 views
2

Я пытаюсь подключить веб-сайт, который я создаю для FitBit, используя ASP.NET 5 (rc1-final), Identity и MS.AspNet.Authentication. OAuth. Я намерен использовать поток полномочий авторизации для OAuth 2.0. У меня есть приложение настройки (подробности ниже) на FitBit, и мой Startup.cs выглядит следующим образом:401 Неавторизованный при использовании общего промежуточного программного обеспечения OAuth с ASP.NET 5

app.UseIdentity(); 

app.UseOAuthAuthentication(options => 
    { 
     options.AuthenticationScheme = "FitBit-AccessToken"; 
     options.AuthorizationEndpoint = "https://www.fitbit.com/oauth2/authorize"; 
     options.TokenEndpoint = "https://api.fitbit.com/oauth2/token"; 
     options.SaveTokensAsClaims = true; 
     options.CallbackPath = new PathString("/signing-fitbit-token/"); 
     options.ClientId = "[MY ID STRIPPED OUT]"; 
     options.ClientSecret = "[MY SECRET STRIPPED OUT]"; 
     options.DisplayName = "FitBit"; 
     options.Scope.Add("activity"); 
     options.Scope.Add("heartrate"); 
     options.Scope.Add("location"); 
     options.Scope.Add("nutrition"); 
     options.Scope.Add("profile"); 
     options.Scope.Add("settings"); 
     options.Scope.Add("sleep"); 
     options.Scope.Add("social"); 
     options.Scope.Add("weight"); 
     options.AutomaticAuthenticate = true; 
    }); 

При нажатии на кнопку входа, я перенаправлены на страницу авторизации на FitBit, но когда я щелкаю Авторизовать , я поздоровался со страницей ошибки DEV ASP.NET:

An unhandeled exception occurred while processing the request. 
HttpRequestException: Response status code does not indicate success: 401 (Unauthorized) 
    System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode() 

Я прочитал here, что с некоторыми OAuth конечные точки (а именно Yahoo) они не любят Localhost. Итак, я попробовал это как с localhost, так и с изменением моего хост-файла в другом домене. Я гарантировал, что URL-адрес перенаправления, который я передаю, является тем, что зарегистрировано для приложения в FitBit.

Эта ошибка исходит с моего сайта и проходит до такой степени, что она меняет код для токена доступа. У меня есть скрипач, я немного потерял, куда идти отсюда. Я работаю на http (так как это локальный dev, и у меня пока нет сертификата ssl), но я не был полностью уверен, что это важно.

ответ

1

Что-то не так с запросом OAuth на FitBit, вам нужно отладить этот запрос и узнать, почему у вас есть 401 от FitBit.

+0

Стоит отметить, что RC2 будет делать ошибки HTTP проще отлаживать;) – Pinpoint

2

По умолчанию промежуточное ПО OAuth2 отправляет учетные данные клиента, передавая их в форме запроса (закодированной с использованием application/x-www-form-urlencoded).

К сожалению, Fitbit поддерживает только базовую аутентификацию: поскольку учетные данные не передаются в заголовок Authorization, Fitbit обрабатывает ваш токен-запрос как не прошедший проверку и отклоняет его.

К счастью, это то, что выделенный Fitbit социальный поставщик (внутренне на основе общего промежуточного oauth2) будет обрабатывать для вас: https://www.nuget.org/packages/AspNet.Security.OAuth.Fitbit/1.0.0-alpha3

app.UseFitbitAuthentication(options => { 
    options.ClientId = "230H9"; 
    options.ClientSecret = "ae7ff202cg5z42d85a3041fdc43c9c0b2"; 
}); 
+0

Это оно! Спасибо! –

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

  • Нет связанных вопросов^_^