2017-05-05 43 views

回答

1

假设您使用ASP.NET身份,您不需要手动调用Facebook登录API。 FacebookMiddleware在为Startup.Configure()方法添加UseFacebookAuthentication(FacebookOptions option)代码后为您做好了准备。所以基本上你只需要向中间件提供AppIdAppSecret,剩下的就完成了。

如果您在Views/Account/Login.cshtml看看,你会看到下面的代码产生对外部供应商的按钮:

<div class="col-md-4"> 
    <section> 
     <h4>Use another service to log in.</h4> 
     <hr /> 
     @{ 
      var loginProviders = SignInManager.GetExternalAuthenticationSchemes().ToList(); 
      if (loginProviders.Count == 0) 
      { 
       <div> 
        <p> 
         There are no external authentication services configured. See <a href="https://go.microsoft.com/fwlink/?LinkID=532715">this article</a> 
         for details on setting up this ASP.NET application to support logging in via external services. 
        </p> 
       </div> 
      } 
      else 
      { 
       <form asp-controller="Account" asp-action="ExternalLogin" asp-route-returnurl="@ViewData["ReturnUrl"]" method="post" class="form-horizontal"> 
        <div> 
         <p> 
          @foreach (var provider in loginProviders) 
          { 
           <button type="submit" class="btn btn-default" name="provider" value="@provider.AuthenticationScheme" title="Log in using your @provider.DisplayName account">@provider.AuthenticationScheme</button> 
          } 
         </p> 
        </div> 
       </form> 
      } 
     } 
    </section> 
</div> 

当用户点击一个按钮,它会调用AccountController.ExternalLogin(string provider, string returnUrl)行动,这使得重定向到外部供应商页。

+0

那么Facebook的按钮代码应该如何看待它会调用fb中间件和现在的任何其他操作? –

+0

在我的答案中添加了更多详细信息。 –

+0

这很奇怪......在完成网站的所有步骤之后,我的应用没有生成按钮,没有生成ExternalLogin动作 –

相关问题