如何在Azure移动Web应用程序中获取基本用户信息?

Tom*_*Tom 9 .net c# mobile facebook azure

我有一个Xamarin.Forms应用程序,我想基于FaceBook和Azure实现其身份验证功能.身份验证本身有效,但我还没有找到从中获取基本用户信息的方法(姓名,电子邮件......)

var user = await DependencyService.Get<IMobileClient>()
            .LoginAsync(MobileServiceAuthenticationProvider.Facebook);
Run Code Online (Sandbox Code Playgroud)

在服务器端

 var mobileAppUser = (MobileAppUser)User;
 var facebookCredentials = 
     user.GetIdentityAsync<FacebookCredentials>().Result;
Run Code Online (Sandbox Code Playgroud)

mobileAppUser存在,但facebookCredentials始终为null.

我在Azure上的后端是一个用.net编写的新移动Web应用程序.它的所有功能都很有效,除了这个身份验证问题.我找不到在服务器端或客户端解决此问题的正确方法.PLS.请注意,我的问题是关于Azure移动应用程序的新方式,而不是旧的经典应用程序.

你能帮我这么好吗?我们热烈欢迎任何示例代码或文档.

提前致谢!

Tam*_*mas 5

评论太久了

如果您查看实施GetIdentityAsync,您将看到以下内容:

  • 它检查用户是否经过身份验证(您说用户已通过身份验证,因此这里没有问题)
  • "EMA_RuntimeUrl"从配置中读取(它不是null,因为那样你会得到一个例外)
  • 它检查来自提供者的令牌是否有效.如果没有,则返回null.

我相信这是你遇到的问题.快速搜索这个问题会带您进入这个问题.

那么您是否已在应用程序属性中的azure门户中的移动应用程序中手动创建了EMA_RuntimeUrl,并将其分配给网关地址?


g.p*_*dou 0

使用异步调用,您应该等待操作完成,完成后结果将可用。您可以通过多种方式做到这一点,但在这种情况下,最自然的是:

var facebookCredentials = await user.GetIdentityAsync<FacebookCredentials>();
// Here you can use your facebookCredentials variable:
Run Code Online (Sandbox Code Playgroud)

  • 是的你是对的。还是值得一试。永远不知道实施细节。 (2认同)