在Azure Api App中获取经过身份验证的用户信息

时间:2015-10-19 01:26:47

标签: facebook api authentication azure azure-api-apps

上下文

我将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服务中获取经过身份验证的用户的基本方案。

1 个答案:

答案 0 :(得分:1)

终于开始工作了。在调用GetRawTokenAsync方法时,我们必须await。使用Result对象中的WaitTask无效并超时。我仍然不清楚为什么,也许是框架错误?