acquiretokenasync没有返回调用onactiveresult

时间:2018-02-06 06:08:26

标签: c# xamarin.android active-directory

我是Xamarin的新手,有一个示例Windows桌面应用程序的活动目录身份验证,我试图在xamarin android中创建。我正在使用Xamarin netstandard 2.0项目。我试图在.netstandard 2.0中为ADAL示例应用找到太多,但我得到的只是便携式xamarin应用。

以下是我的代码 -

 protected async override void OnCreate(Bundle savedInstanceState)
 {
     base.OnCreate(savedInstanceState);
     SetContentView(Resource.Layout.Main);
     Button btnActivate = FindViewById<Button>(Resource.Id.btnActivate);
     if (btnActivate != null)
     {
         btnActivate.Click +=  (object sender, EventArgs e) =>
         {
              btnActivate_Click(sender, e);
              FindViewById<Button>(Resource.Id.btnActivate).Visibility = ViewStates.Gone;
         };
     }
 }

private async void btnActivate_Click(object sender, EventArgs e)
{
    try
    {
        var context = new AuthenticationContext(commonAuthority);
        if (context.TokenCache.ReadItems().Count() > 0)
            context = new AuthenticationContext(context.TokenCache.ReadItems().First().Authority);

            result = await context.AcquireTokenAsync(
                graphResourceUri,
                clientId,
                new Uri("urn:ietf:wg:-Oauth:2.0:-Oob"),
                new PlatformParameters(this), 
                UserIdentifier.AnyUser, 
                "nux=1");
     }
     catch (Exception ex)
     {
          //this.mainForm.Log(ex.ToString());
     }
}

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{    base.OnActivityResult(requestCode, resultCode, data);
    AuthenticationAgentContinuationHelper.SetAuthenticationAgentContinuationEventArgs(requestCode, resultCode, data);
}

以上是我用于Active Direcotry身份验证的代码,我可以查看微软的登录页面,但在应用凭证和登录后,我没有收到任何响应,执行也没有进入OnActivityResult mehtod。

正如我所说,我是xamarin的新手,对它的了解非常少,请帮助我知道我是否遗漏了任何东西。

请注意,上面的代码是使用netstandard 2.0库。

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

以下是使用Xamarin sample进行身份验证的ADAL的链接。我认为你会发现它有用作为一个跳跃点。