【问题标题】:Get Facebook OAuth token and store in claims when using WebApi使用 WebApi 时获取 Facebook OAuth 令牌并存储在声明中
【发布时间】:2014-11-30 18:32:34
【问题描述】:

我一直在关注这个博客,它展示了如何使用范围从用户那里获取额外的 Facebook 数据,然后将其存储在声明中。

http://blogs.msdn.com/b/webdev/archive/2013/10/16/get-more-information-from-social-providers-used-in-the-vs-2013-project-templates.aspx

这在标准 MVC Web 应用程序中似乎可以正常工作。但是,我在使用 WebApi 时正在努力获取存储的令牌。我的项目中的 Startup.Auth 代码完全相同,我可以看到请求的范围是正确的,但我不明白我应该在什么时候访问请求的数据。此外,声明似乎从未被存储,这很奇怪。

【问题讨论】:

  • 事实上,即使在 MVC Web 应用程序项目中,令牌的声明似乎也没有被存储,即使我在 Startup.Auth 中指定了这一点。

标签: c# facebook asp.net-web-api oauth


【解决方案1】:

我建议您阅读我关于 ASP.NET Web API 2 external logins with Facebook and Google 的博客文章,其中将向您介绍如何在不使用 MVC 依赖项或模板的情况下将外部逻辑与 Web API 集成。

如果您需要获取 Facebook 令牌,则需要覆盖 on Authenticated 方法并将其存储在自定义声明中,以便在声明字典中可用,如下代码所示:

   public class FacebookAuthProvider : FacebookAuthenticationProvider
    {
        public override Task Authenticated(FacebookAuthenticatedContext context)
        {
            context.Identity.AddClaim(new Claim("ExternalAccessToken", context.AccessToken));
            return Task.FromResult<object>(null);
        }
    }

你在 Startup.cs 中调用这个类:

 //Configure Facebook External Login
            facebookAuthOptions = new FacebookAuthenticationOptions()
            {
                AppId = "xxxxxx",
                AppSecret = "xxxxxx",
                Provider = new FacebookAuthProvider()
            };
            app.UseFacebookAuthentication(facebookAuthOptions);

【讨论】:

  • 谢谢,我会试试这个。知道为什么微软为 Startup.Auth 类(OnAuthenticated => context 等)提供的代码似乎没有被解雇,即使是开箱即用的模板?它似乎存储了用户登录但没有声明。
  • 我这里没有答案,但它应该可以工作。试试我的示例代码,让我知道您的反馈。
  • 我从一个全新的 Web 项目模板中尝试了代码(暂时保持简单)。所以我从字面上添加了 Facebook 提供程序,添加了我的密钥等,然后一切正常,我可以看到覆盖方法正在被命中,但它没有存储令牌的声明。要启用此功能,我可能会缺少什么吗?
  • 我相信没有,如果我的回答对您有帮助,请将其标记为答案。谢谢。
  • @TaiseerJoudeh 额外的 Facebook 信息怎么样?添加 context.Identity.AddClaim(new Claim("Email", context.Email)); context.Email 为空
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-15
  • 2012-12-10
  • 2021-01-14
  • 2015-05-05
  • 2011-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多