Asp.net

ASP.NET MVC 5(VS2013 最終版):使用 OWIN 登錄 Facebook 失敗(loginInfo 為空)

  • May 29, 2018

我安裝了昨天發布的 VS2013 最終版本,並且我試圖讓一個範例在我啟用外部 Facebook 登錄的情況下工作。我的第一個問題:

在這個控制器程式碼中(我沒有觸摸它,而是從範例模板中保留下來):

   //
   // GET: /Account/ExternalLoginCallback
   [AllowAnonymous]
   public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
   {
       var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
       if (loginInfo == null)
       {
           return RedirectToAction("Login");
       }

我在 await AuthenticationManager.GetExternalLoginInfoAsync() 行上設置了一個斷點。程式碼返回(在我登錄 Facebook 之後),並且“loginInfo”為空。在 UI 中,登錄頁面繼續顯示,沒有任何變化。我該如何調試呢?我試圖在 GetExternalLoginInfoAsync() 中找到程式碼,但根據這個執行緒:

Asp.Net Identity RTM 版本中的 Microsoft.AspNet.Identity.Owin.AuthenticationManager 在哪裡?

AuthenticationManager 現在不見了。(上述情況似乎並非如此。)

我的第二個問題:是否有其他人能夠在不更改 ASP.NET MVC5 範常式式碼的情況下使用 Facebook 登錄的範例(除了取消註釋 app.UseFacebookAuthentication 並填寫您的 FB 應用程序詳細資訊)?(您必須使用 Facebook 配置別名主機,例如“localtest.me”並使用 IIS express 進行配置。)

謝謝你的幫助…

-本

好吧,這對我來說很愚蠢。首先,我開始使用 Fiddler 進行調試,然後看到 Facebook 發回了這個:

WWW-Authenticate: OAuth “Facebook Platform” “invalid_request” “請求無效,因為應用程序密鑰與客戶端令牌相同”

此消息不准確,但在搜尋它時,我發現了另一個執行緒,其中使用者指定重置應用程序密碼解決了問題。(我已經很長時間沒有使用這個應用程序了,所以這可能是相關的。)所以我採取了這些步驟,但仍然看到了問題。但是 Fiddler 中的資訊發生了變化:

WWW-Authenticate: OAuth “Facebook Platform” “invalid_request” “請求無效,因為應用程序被配置為桌面應用程序”

事實上,該應用程序在 Facebook 中配置錯誤。我將它設置為一個網路應用程序,它現在可以完美執行了!希望這可以幫助其他人,因為這在啟動 Fiddler 之前還不清楚。

我在向 Google 進行身份驗證時遇到了這個問題(OpenID,而不是 OAuth)。所以確實沒有什麼可搞砸的,但確實在圍繞會話變數進行了一些簡單的程式碼更改後它停止了工作。使用提琴手我確定Google確實返回了有效資訊。

比我聰明的人發現了我的問題並在此處描述了修復方法。

ASP.NET_SessionId + OWIN Cookies 不發送到瀏覽器

我所要做的就是添加Session["salt"] = "salt";到帳戶/登錄控制器,中提琴它神奇地開始完美執行。不確定這是否是您的確切問題,但這是我的問題。

引用自:https://stackoverflow.com/questions/19453293