2

我正在使用 Intune 通过公司门户应用注册应用,现在我的问题是:如何在 Xamarin Forms 中获取当前用户 ID(UPN/电子邮件)?

在 Xamarin.iOS 中,我使用的是 Intune Wrappers,它与身份验证一起工作正常,但如何获取 UPN?

在 Xamarin.Android 我已经这样做了:

我已经使用 SDK 和 MAM.Remapper 工具按照此处所述设置了项目。我还添加了一个派生自 MAMApplication 的新应用程序类。

在我的 MainActivity 中,我已经像这样实现了 OnMAMCreate:

protected override async void OnMAMCreate(Bundle bundle)
{ 
    base.OnMAMCreate(bundle);
      Xamarin.Forms.Forms.Init(this, bundle);
      LoadApplication(new App());

      var userInfo = MAMComponents.GetUserInfo();
      var userEmail = userInfo.PrimaryUser; 
}

它一直给我错误,说 MAMComponents 没有 GetUserInfo() 之类的方法。我尝试在 Assembly 浏览器中进行挖掘,但在 MAMComponents 中没有找到任何类似的东西。

Xamarin.Forms 与 Intune 的集成根本没有在线帮助。

4

1 回答 1

2

我在这方面找到了帮助,并且能够弄清楚。首先,这必须针对特定平台进行,这意味着 Xamarin.forms 的全局 PCL 项目无能为力。您需要将 nuget 包分别添加到 Xamarin.forms 的 iOS 和 Android 项目中。

在 iOS 上将此添加到您的 AppDelegate.cs:

string identity = null;
IntuneMAMEnrollmentManager.Instance.LoginAndEnrollAccount(identity);
IntuneMAMPolicyManager.Instance.IsIdentityManaged(IntuneMAMEnrollmentManager.Instance.EnrolledAccount);

在 Entitlement.plist 中启用 Keychain 并为 MAM 和 adalcache 添加两个组,如下所示:

在此处输入图像描述

在您的 Main.cs 或您需要 UPN 的任何地方添加:

IntuneMAMPolicyManager.Instance.IsIdentityManaged(IntuneMAMEnrollmentManager.Instance.EnrolledAccount); 
string testUser = IntuneMAMEnrollmentManager.Instance.EnrolledAccount;

如果您希望在全局 PCL 项目中操作 UPN,请使用 Dependency Service 将数据发送到 PCL。

于 2018-10-17T17:31:16.437 回答