【发布时间】:2017-08-23 23:58:41
【问题描述】:
这段代码运行了一年左右,这个问题与 facebook 将其 API 响应更改为 JSON(而不是常规查询字符串)有关
这是一个MVC5项目,我更新为https://www.nuget.org/packages/Microsoft.Owin.Security.Facebook/3.1.0-rc1 如此处建议: ASP.NET MVC5 OWIN Facebook authentication suddenly not working 并尝试按照此处的建议简化我的通话:https://github.com/aspnet/AspNetKatana/issues/38
此外,我尝试添加 BackchannelHttpHandler 类(但将其删除,因为它对我不起作用),此外,我删除了我的 facebook 网络应用程序(它是 API 2.4)并创建了一个未获批准的新应用程序(2.8)但是,但我认为测试应用程序应该可以正常工作。
我不断收到 302 error=access_denied
这是我正在使用的代码:
var facebookAuthOptions = new FacebookAuthenticationOptions();
facebookAuthOptions.AppId = "xxx";
facebookAuthOptions.AppSecret = "yyy";
facebookAuthOptions.SendAppSecretProof = true;
facebookAuthOptions.CallbackPath = new PathString("/signin-facebook");
facebookAuthOptions.Scope.Add("public_profile");
facebookAuthOptions.Scope.Add("email");
facebookAuthOptions.Scope.Add("user_birthday");
// added for Microsoft.Owin.Security.Facebook/3.1.0-rc1
facebookAuthOptions.Fields.Add("email");
facebookAuthOptions.Fields.Add("birthday");
facebookAuthOptions.Fields.Add("gender");
facebookAuthOptions.Fields.Add("locale");
facebookAuthOptions.Fields.Add("location");
facebookAuthOptions.Fields.Add("timezone");
facebookAuthOptions.Provider = new FacebookAuthenticationProvider()
{
OnAuthenticated = (context) =>
{
context.Identity.AddClaim(new Claim("FacebookAccessToken", context.AccessToken));
var expiryDuration = context.ExpiresIn ?? new TimeSpan();
context.Identity.AddClaim(new Claim("urn:facebook:expires_in", DateTime.UtcNow.Add(expiryDuration).ToString(CultureInfo.InvariantCulture)));
// Add all other available claims
foreach (var claim in context.User)
{
var claimType = string.Format("urn:facebook:{0}", claim.Key);
var claimValue = claim.Value.ToString();
if (!context.Identity.HasClaim(claimType, claimValue))
context.Identity.AddClaim(new Claim(claimType, claimValue, "XmlSchemaString", "Facebook"));
}
return Task.FromResult(0);
}
};
app.UseFacebookAuthentication(facebookAuthOptions);
净流量是这样的:
https://localhost:44300/external-providers (302)
https://localhost:44300/signup-connect?error=access_denied (302)
【问题讨论】:
标签: facebook facebook-graph-api oauth