在 ASP.NET MVC 5 中从 Facebook v2.4 API 访问 OAuthExternalLoginCallback 中的电子邮件地址[重复]

2024-02-12

对于 Facebook API v2.3,如果设置了以下内容,用户的电子邮件地址将在回调中返回ExternalLoginCallback;

app.UseFacebookAuthentication(new FacebookAuthenticationOptions
{
    AppId = "XXX",
    AppSecret = "XXX",
    Scope = { "email" }
});

但是,任何只能定位 v2.4(7 月 8 日发布)的应用程序不再将电子邮件地址返回到ExternalLoginCallback.

我认为这可能与列出的 v2.4 更改有关here https://developers.facebook.com/docs/apps/changelog#v2_4_changes;

声明字段

为了尝试提高移动网络的性能, v2.4 中的节点和边要求您明确请求 GET 请求所需的字段。例如,GET /v2.4/me/feed默认情况下不再包含点赞和评论,但是GET /v2.4/me/feed?fields=comments,likes将返回数据。了解更多 详细信息请参阅有关如何请求特定字段的文档。

我现在如何访问该电子邮件地址?


为了解决这个问题,我必须安装Facebook SDK for .NET https://www.nuget.org/packages/Facebook/从 nuget 并单独查询电子邮件地址。

In the ExternalLoginCallback方法中,我添加了一个条件来从 Facebook Graph API 填充电子邮件地址;

var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();

if (loginInfo == null)
{
    return RedirectToAction("Login");
}

// added the following lines
if (loginInfo.Login.LoginProvider == "Facebook")
{
    var identity = AuthenticationManager.GetExternalIdentity(DefaultAuthenticationTypes.ExternalCookie);
    var access_token = identity.FindFirstValue("FacebookAccessToken");
    var fb = new FacebookClient(access_token);
    dynamic myInfo = fb.Get("/me?fields=email"); // specify the email field
    loginInfo.Email = myInfo.email;
}

并得到FacebookAccessToken我延长了ConfigureAuth;

app.UseFacebookAuthentication(new FacebookAuthenticationOptions
{
    AppId = "XXX",
    AppSecret = "XXX",
    Scope = { "email" },
    Provider = new FacebookAuthenticationProvider
    {
        OnAuthenticated = context =>
        {
            context.Identity.AddClaim(new System.Security.Claims.Claim("FacebookAccessToken", context.AccessToken));
            return Task.FromResult(true);
        }
    }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ASP.NET MVC 5 中从 Facebook v2.4 API 访问 OAuthExternalLoginCallback 中的电子邮件地址[重复] 的相关文章

随机推荐

  • Ravendb 计数查询

    我需要获取特定集合中的文档计数 现有索引 Raven DocumentCollections 存储与属于该集合的实际文档配对的集合的计数和名称 如果可能的话 我想从这个索引中获取计数 这是 Raven Document Collection
  • 动态设置水晶报表仍然要求数据库登录

    我正在尝试部署Crystal Reports in my MVC应用 为了充分利用 Crystal Report Viewer 我必须使用webform 它在我的开发环境中运行得相当好 该应用程序将部署在用户的服务器上并连接到他们的个人数据
  • 为什么“break”在结束“循环”时不需要分号?

    摘自第3 5章 https doc rust lang org book ch03 05 control flow html returning values from loops 生锈之书 的内容 我们使用break带有值的关键字coun
  • 仅选择数字列进行替换

    我有一个数据框 其中包含一些数字列 一些整数列和一些因子列 我正在尝试将数据框转换为仅对数字列进行平方 但解决方案这个线程 https stackoverflow com questions 5863097 selecting only n
  • 本机应用程序和 chrome 扩展之间的连接在一段时间后中断

    我正在使用 chrome 本机消息传递 api 在我的 chrome extension 和用 c 编写的 native windows app 之间进行通信 连接建立良好 数据也得到交换 但是 在从扩展程序对本机应用程序进行随机数量的调用
  • 有没有一个工具可以删除Python中不使用的函数?

    我有以下情况 我正在开发几个使用我编写的库模块的项目 库模块包含多个类和函数 在每个项目中 都会使用库代码的某些子集 但是 当我为其他用户发布项目时 我只想泄露该项目使用的代码而不是整个模块 这意味着对于给定的项目 我希望从库代码中删除未使
  • 重新加载数据表时双重ajax调用

    我有一个像这样初始化的数据表 var initTable function datatablesresults tr not first on click function var dateandtime this find nth chi
  • df[x]、df[[x]]、df['x']、df[['x']] 和 df.x 之间的区别

    努力理解标题中 5 个示例之间的区别 系列与数据框之间有一些用例吗 什么时候应该使用其中一种而不是另一种 哪些是等价的 df x 使用变量索引列x 退货pd Series df x 使用变量对单列 DataFrame 进行索引 切片x 退货
  • 如何在mysql中左连接多个一对多表?

    我在连接 mysql 中的三个表时遇到问题 假设我们有一个名为posts我将我的条目保存在其中 我有一个名为likes我将 user id 和 post id 存储在其中 第三个表名为comments我在其中存储 user id 和 pos
  • Java 中的顺序无关哈希

    我想用Java计算一组字符串的哈希值 是的 我可以对字符串进行排序并计算 MD5哈希迭代使用digest update 但我宁愿省略排序并使用类似的东西combineUnordered https github com google gua
  • 使用 Python 计算 3D 图像的 Hessian 高斯特征值

    我有一个 3D 图像 我想计算该图像的 Hessian 或 Gaussian 特征值 我想要每个体素的 Hessian 近似的三个特征值 这个功能在图像处理中似乎很常见 是否有此功能的现有实现 例如用于拉普拉斯计算的 scipy ndima
  • 在 EC2 EBS 实例中更改 Cloudera 的 IP 地址

    我已经安装了clouderam1 large实例 我能够成功安装它 但是 一旦我停止实例并在第二天早上再次启动它 IP 就会发生变化 cloudera 仍然引用旧的 IP 并且没有任何服务运行 由于我无法全天保持实例运行 我该如何解决这个问
  • 仅解析包含字符串和值的 JSON 对象

    我在尝试解析最小值以在 Android 中进行映射时遇到问题 有一些示例 JSON 格式 其中包含更多信息 例如 id 1 name sql id 2 name android id 3 name mvc 这是最常用且易于使用的示例 只需使
  • ConcurrentHashmap 同时进行写入和获取操作

    我有一个关于 ConcurrentHashMap 的问题 假设我有 2 个线程 线程 A 尝试从共享 ConcurrentHashMap 中获取对象 线程B清除共享映射 如果线程 A 和线程 B 同时访问共享资源 会发生什么情况 我搜索了文
  • 从按下的按钮获取文本

    如何从按下的按钮获取文本 安卓 我可以从按钮获取文本 String buttonText button getText 我可以从按下的按钮获取 id int buttinID view getId 目前我不知道如何获取按下的按钮上的文本 p
  • 规划网络应用程序

    我即将开始建立新的初创公司 因此我需要您的一些指导 规划网站的最佳方法是什么 我不认为 首先设计 然后数据库关系 然后开始开发 而是 如何规划应用程序的工作方式 是否有一些经过验证的方法 例如制作网站 蓝图 的最佳方法 例如使用某种工具或其
  • Docker php:fpm—安装 php 扩展

    我用的是官方的php fpmdocker 镜像作为我的应用程序容器的基础 所以Dockerfile像这样开始 FROM php fpm 稍后在文件中我希望有类似的内容 RUN apt get install y php7 0 gd 但这告诉
  • 连续分数

    我对连续分数的理解是它总是以分数形式表示小数 我认为连续分数总是返回小于或等于小数的值 不幸的是 我的代码有时会返回大于十进制输入的小数值 我对连续分数的理解正确吗 如果是这样 请解释一下我的代码中的错误所在 public static R
  • JavaScript 获取样式

    是否可以使用 JavaScript 获取对象的所有样式 就像是 main css myLayer position absolute width 200px height 100px color 0000ff main js var ob
  • 在 ASP.NET MVC 5 中从 Facebook v2.4 API 访问 OAuthExternalLoginCallback 中的电子邮件地址[重复]

    这个问题在这里已经有答案了 对于 Facebook API v2 3 如果设置了以下内容 用户的电子邮件地址将在回调中返回ExternalLoginCallback app UseFacebookAuthentication new Fac