gpt4 book ai didi

c# - 在 asp net 中从 facebook 获取用户电子邮件

转载 作者:太空狗 更新时间:2023-10-29 21:32:34 27 4
gpt4 key购买 nike

我正在尝试从 Facebook 获取用户名和用户电子邮件。我阅读了很多关于这个主题的信息,这是我的最终代码,出于某种原因只能在我的 facebook 应用程序管理员帐户上使用:

public partial class Startup
{
public void ConfigureAuth(IAppBuilder app)
{

/*Other external login options*/

var FacebookOptions = new FacebookAuthenticationOptions()
{
AppId = "My App Id",
AppSecret = "My App Secret",
SignInAsAuthenticationType = DefaultAuthenticationTypes.ExternalCookie,
BackchannelHttpHandler = new FacebookBackChannelHandler(),
UserInformationEndpoint = "https://graph.facebook.com/v2.7/me?fields=id,name,email"
};


}
}
public class FacebookBackChannelHandler : HttpClientHandler
{
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
{
if (!request.RequestUri.AbsolutePath.Contains("/oauth"))
{
request.RequestUri = new Uri(request.RequestUri.AbsoluteUri.Replace("?access_token", "&access_token"));
}

return await base.SendAsync(request, cancellationToken);
}
}
public class AccountController : Controller
{
public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
/*my sign in code that works on my facebook app admin account*/
}
}

在每个帐户上,我得到 loginInfo.Email 等于 null

developers.facebook.com我有:

Approved Items

当有人点击“使用 Facebook 登录”时,他会收到以下消息:

First facebook login page

如果我点击“查看您提供的信息”,我会得到:

Review the info you provide

我错过了什么?为什么它不起作用?

最佳答案

终于找到答案了!只需将 Scope = { "email"} 添加到 FacebookOptions 即可解决问题!

我现在的代码:

public partial class Startup
{
public void ConfigureAuth(IAppBuilder app)
{

/*Other external login options*/

var FacebookOptions = new FacebookAuthenticationOptions()
{
AppId = "My App Id",
AppSecret = "My App Secret",
SignInAsAuthenticationType = DefaultAuthenticationTypes.ExternalCookie,
BackchannelHttpHandler = new FacebookBackChannelHandler(),
Scope = { "email" },
UserInformationEndpoint = "https://graph.facebook.com/v2.7/me?fields=id,name,email"
};
}
}

其余代码保持不变。如果此问题返回,我只为案例添加了错误页面:

public class AccountController : Controller
{
public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
if(loginInfo.Email == null)
{
return RedirectToAction("FacebookError", "Account");
}
/*my sign in code*/
}
}

关于c# - 在 asp net 中从 facebook 获取用户电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39256205/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com