2016-01-05 37 views
2

我正在嘗試使用ASP.NET 5(rc1-final),Identity和MS.AspNet.Authentication將我構建到FitBit的網站連接起來。 OAuth中間件。我打算使用OAuth 2.0的授權授權流程。我發現應用程式FitBit成立(詳情如下),和我的Startup.cs樣子:401未經授權,在ASP.NET 5中使用通用OAuth中間件

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授權頁面,但是當我點擊授權,我迎接與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的端點(即雅虎),他們不喜歡本地主機。所以,我用localhost嘗試了它,並將我的主機文件修改爲不同的域。我已確保我傳入的重定向網址是在FitBit中爲應用程序註冊的內容。

這個錯誤來自我的網站,並且正在接近它交換訪問令牌代碼的地步。我有提琴手打開我有點失落,從哪裏去。我在http上運行(因爲這是本地開發,我還沒有ssl證書),但我不完全確定這是否重要。

回答

1

對FitBit的OAuth請求出現問題,您需要調試該請求並查看您爲什麼從FitBit獲得401回來。

+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

而已!謝謝! –

相關問題