1

语境

我有一个 Azure Api 应用程序设置为“公共(经过身份验证)”并启用了 Facebook 身份。我的 Api 应用程序受到保护,我可以通过 FB 进行身份验证。在 Api App 中,我想获取经过身份验证的用户信息,例如登录提供程序、令牌和电子邮件以保存在数据库中。

问题

我找不到任何有关如何获取此信息的文档。我按照这篇文章尝试了

    var runtime = Runtime.FromAppSettings(Request);
    var user = runtime.CurrentUser;
    TokenResult token = user.GetRawTokenAsync("facebook").Result;
    var name = (string)token.Claims["name"];
    var email = (string)token.Claims["http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"];

我已经对 apiapp.json 文件进行了更改以允许 facebook 身份验证"authentication": [{"type": "facebook"}],但是在GetRawTokenAsync远程调试 Api 应用程序时它会超时。

查看其他博客/文章/帖子,以下是通过引用附加程序集“Microsoft.WindowsAzure.Mobile”的另一种方式

    var user = (MobileAppUser)this.User;
    var facebookCredentials = user.GetIdentityAsync<FacebookCredentials>().Result;

但这在远程调试我的 Api 应用程序时也不能像用户this.user类型那样工作。WindowsPrincipal显然“Microsoft.Azure.AppService.ApiApps.Service”是 Azure Api 应用程序需要的唯一参考。

我错过了什么吗?似乎是在 Api App Web 服务中获取经过身份验证的用户的基本场景。

4

1 回答 1

1

终于让它工作了。调用GetRawTokenAsync方法时我们必须await. 使用ResultWaitTask对象不起作用并超时。我仍然不清楚为什么,也许是框架错误?

于 2015-11-30T19:00:01.263 回答