语境
我有一个 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 服务中获取经过身份验证的用户的基本场景。