上下文
我将Azure Api App设置为" Public(已验证)"并启用了Facebook身份。我的Api应用程序受到保护,我可以通过FB进行身份验证。在Api应用程序中,我想获取经过身份验证的用户信息,例如登录提供程序,令牌和电子邮件,以便保存在数据库中。
问题
我无法找到有关如何获取此信息的任何文档。我关注了this文章并尝试了
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"}]
,但在远程调试Api App时,它会在GetRawTokenAsync
超时。
查看其他博客/文章/帖子,以下是引用其他程序集的另一种方式" Microsoft.WindowsAzure.Mobile"
var user = (MobileAppUser)this.User;
var facebookCredentials = user.GetIdentityAsync<FacebookCredentials>().Result;
但是,当远程调试我的Api应用程序时,this.user
类型为WindowsPrincipal
用户,这也不起作用。显然&#34; Microsoft.Azure.AppService.ApiApps.Service&#34;是Azure Api应用程序所需的唯一参考。
我错过了什么吗?似乎是在Api App Web服务中获取经过身份验证的用户的基本方案。
答案 0 :(得分:1)
终于开始工作了。在调用GetRawTokenAsync
方法时,我们必须await
。使用Result
对象中的Wait
或Task
无效并超时。我仍然不清楚为什么,也许是框架错误?