使用Azure AD B2C的Xamarin.Forms应用程序仅显示Microsoft登录

时间:2018-03-09 16:55:37

标签: xamarin.forms azure-ad-b2c

我正在开发一个使用Azure AD B2C的Xamarin应用程序,但我遇到了一些麻烦。

即使我将LinkedIn,Google,Microsoft,Facebook和Twitter设置为身份提供商,我唯一提到的是我的Microsoft帐户。当我的应用程序调用登录时,我没有看到任何其他按钮。适用于Microsoft登录,不能访问任何其他人。

这是我对AcquireTokenAsync的调用:

var result = await AuthenticationClient.AcquireTokenAsync(Constants.Scopes, 
    GetUserByPolicy(App.AuthenticationClient.Users, Constants.PolicySignUpSignIn), 
    Evaluator.App.UiParent);

在门户网站的Azure AD B2C设置中,我将Web App / Web API设置为NO,将Native Client设置为YES。自定义重定向URI是“masl {myappid}:// auth” 在Keys下,它说“没有结果”。 在API访问(预览)下,它表示有两个范围(两个复选框都检查openid和offline_access)。 在已发布的范围(预览)下,它表示尚未包含Web应用程序/ Web API。

在身份提供商下,我配置了LinkedIn,Google,Microsoft,Facebook和Twitter。

2 个答案:

答案 0 :(得分:1)

事实证明,更改为使用AcquireTokenAsync的其他重载之一会导致不同的行为。

var result = //await AuthenticationClient.AcquireTokenAsync(Constants.Scopes, GetUserByPolicy(App.AuthenticationClient.Users, Constants.PolicySignUpSignIn), Evaluator.App.UiParent);
    await App.AuthenticationClient.AcquireTokenAsync(Constants.Scopes, GetUserByPolicy(App.AuthenticationClient.Users, Constants.PolicySignUpSignIn), UIBehavior.SelectAccount, string.Empty, null, Constants.Authority, App.UiParent);

原始调用导致调用Azure AD服务,此处显示的调用会导致调用Azure B2C服务。我没有看到在任何地方记录,并且我希望所有重载都有更好的文档来描述它们之间行为的相关性和区别。

现在我看到我配置的所有提供商都显示为选项!但是,有一个新问题(尽管它们看起来配置正确)我不再在result.User.DisplayableId字段中收到电子邮件地址。尽管如此,我的原始问题得到了回答。

答案 1 :(得分:0)

配置您的策略标识提供程序(IDP)

configure policy idps screenshot

Sample Policy

login screenshot