You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 6配置Facebook登录遇OAuth状态无效问题求助

ASP.NET Core 6 Facebook登录:oauth state无效&点击无反应问题排查

针对你遇到的问题,以下是最可能遗漏的步骤和排查方向:

1. 确认Facebook应用的重定向URI配置

在Facebook开发者后台的「产品」>「Facebook登录」>「设置」中,必须将https://localhost:7000/signin-facebook添加到「有效的OAuth重定向URI」列表。注意:

  • 必须是HTTPS,端口要和本地调试的端口完全一致
  • 不能省略任何部分,包括signin-facebook后缀

2. 补全Authentication的核心配置

你当前的AddAuthentication()调用缺少默认方案和Cookie认证配置,ASP.NET Core需要这些来处理身份持久化和认证流程:

using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Authentication.Facebook;

// ...

builder.Services.AddAuthentication(options =>
{
    options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = FacebookDefaults.AuthenticationScheme;
})
.AddCookie() // 必须添加,用于存储登录后的用户身份
.AddFacebook(Options =>
{
    Options.AppId = "87996242323333695";
    Options.AppSecret = "7c539cd1111111111111115";
});

3. 检查登录按钮的跳转逻辑

不要直接访问/signin-facebook,这个是Facebook回调的端点,必须通过应用的外部登录发起请求:

  • 如果使用默认Identity UI,登录按钮应指向/Identity/Account/ExternalLogin?provider=Facebook
  • 自定义页面的话,要通过ChallengeAsync发起认证,示例:
public async Task<IActionResult> LoginWithFacebook()
{
    var properties = new AuthenticationProperties { RedirectUri = "/" };
    return Challenge(properties, FacebookDefaults.AuthenticationScheme);
}

直接访问回调端点会因为缺少生成的state参数而报错,这也是你看到The oauth state was missing or invalid的直接原因之一。

4. 确认Facebook应用的访问权限与状态

  • 确保你的测试账号已添加为Facebook应用的「测试用户」(如果应用处于开发模式),或者将应用发布为公开状态
  • 检查public_profile权限是否已正确申请并通过,确保权限状态为「已授予」

5. 本地HTTPS配置验证

确保Visual Studio调试选项中已启用HTTPS,且端口与你配置的7000一致,Facebook不接受HTTP的回调请求。

内容的提问来源于stack exchange,提问作者dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 21:45:34