gpt4 book ai didi

asp.net-mvc - 弃用版本 Facebook Graph API v2.2

转载 作者:行者123 更新时间:2023-11-30 05:23:39 26 4
gpt4 key购买 nike

我们的 Facebook 登录目前无法使用。我们收到了来自 Facebook 开发者门户的消息:

"Name of app" currently has access to Graph API v2.2 which will reach the end of its 2-year lifetime on 27 March, 2017. To ensure a smooth transition, please migrate all calls to Graph API v2.3 or higher.

To check if your app will be affected by this upgrade you can use the Version Upgrade Tool. This will show you which calls, if any, are affected by this change as well as any replacement calls in newer versions. If you do not see any calls, your app may not be affected by this change.

You can also use our changelog to see the full list of changes in all Graph API versions.

我们正在使用 ASP.NET MVC 5,并且我们正在使用或这样的身份验证:

var facebookAuthenticationOptions = new FacebookAuthenticationOptions()
{
AppId = "****",
AppSecret = "****",
AuthenticationType = "Facebook",
SignInAsAuthenticationType = "ExternalCookie",
Provider = new FacebookAuthenticationProvider
{
OnAuthenticated = async ctx => ctx.Identity.AddClaim(new Claim(ClaimTypes.Email, ctx.User["email"].ToString()))
}
};

facebookAuthenticationOptions.Scope.Add("email");

但是今天,我们的登录信息对象在 ExternalLoginCallback 中为空:

        [HttpGet]
[AllowAnonymous]
[RequireHttps]
public async Task<ActionResult> ExternalLoginCallback(string returnUrl = null)
{
try
{
var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
if (loginInfo == null)
{
return RedirectToAction("Login");
}
... more code here...

在 Facebook 开发中。门户我们的 API 版本是 2.3

我们测试了很多选项,但没有结果:

Access email address in the OAuth ExternalLoginCallback from Facebook v2.4 API in ASP.NET MVC 5

Why new fb api 2.4 returns null email on MVC 5 with Identity and oauth 2?

非常感谢您的帮助。

最佳答案

我遇到了同样的问题,下面是我如何设法解决它并从 Facebook 收到电子邮件。

  • 更新以下 NuGet 包
    • Microsoft.Owin 至版本 3.1.0-rc1
    • Microsoft.Owin.Security 到版本 3.1.0-rc1
    • Microsoft.Owin.Security.Cookies 到版本 3.1.0-rc1
    • Microsoft.Owin.Security.OAuth 到版本 3.1.0-rc1
    • Microsoft.Owin.Security.Facebook 到版本 3.1.0-rc1

然后在Identity Startup类中添加如下代码

var facebookOptions = new FacebookAuthenticationOptions()
{
AppId = "your app id",
AppSecret = "your app secret",
BackchannelHttpHandler = new FacebookBackChannelHandler(),
UserInformationEndpoint = "https://graph.facebook.com/v2.8/me?fields=id,name,email,first_name,last_name",
Scope = { "email" }
};

app.UseFacebookAuthentication(facebookOptions);

这是 FacebookBackChannelHandler() 的定义类:

using System;
using System.Net.Http;

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

return await base.SendAsync(request, cancellationToken);
}
}

关于asp.net-mvc - 弃用版本 Facebook Graph API v2.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43058355/

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