【问题标题】:Azure Mobile Service OAuth in Xamarin.iOSXamarin.iOS 中的 Azure 移动服务 OAuth
【发布时间】:2016-09-08 21:41:36
【问题描述】:

我正在为 iOS 和 Android 创建一个 Xamarin Native 项目。我使用 Microsoft Azure 作为我的后端并使用 azure OAuth 进行身份验证。我将 Microsoft Azure Mobile Client 添加到 iOs 和 Android 项目中。

在 Xamarin.Android 项目中,我使用以下代码使用 azure 进行身份验证:

MobileServiceClient  client = new MobileServiceClient("my-azure-app-url");
var user = client.LoginAsync(this, MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory);

上面的代码工作正常,我可以进行身份​​验证。

我也在 Xamain.iOS 中尝试过,但我知道 MobileServiceClient 的初始化在 iO 中是不同的。

MobileServiceClient  client = new MobileServiceClient("my-azure-app-url", HttpMessageHandler);

我找不到这个 HttpMessageHandler 是什么。谁能帮我解决一下

【问题讨论】:

    标签: ios azure xamarin oauth xamarin.ios


    【解决方案1】:

    HTTP message handler 负责客户端和服务器之间的实际通信。

    如果您不指定处理程序,将使用默认(托管)实现。但是您可以继续告诉HttpClient 在iOS(以及Android)上使用本机。您可以使用ModernHttpClient 或使用Xamarin Studio to configure 使用NSUrlSession(在iOS 上)。我强烈建议使用本机处理程序来支持 IPv6 环境并提高性能。

    在您的情况下,您可以省略处理程序参数或使用new System.Net.Http.HttpMessageHandler()

    如果您将 ModernHttpClient 添加到您的应用程序中,您将传入 new NativeMessageHandler()

    可以在我的repo 中找到有关 Azure 离线同步的示例。

    【讨论】:

      【解决方案2】:

      我在使用 Xamarin 项目设置 Azure 移动服务时遇到了类似的问题。在多次更新和删除 Microsoft.Azure.Mobile.Client 包后,我成功地建立了移动服务客户端。

      我在 .Droid 和 .iOS 项目上使用完全相同的初始化:

      public static MobileServiceClient mobileservice = new MobileServiceClient("my-azure-app-url");
      

      附加到 .Droid 和 .iOS 项目的软件包:

      • Microsoft.Azure.Mobile.Client(2.0.1 版)
      • Microsoft.Bcl(1.1.10 版)
      • Microsoft.Bcl.Build(1.0.21 版)
      • Microsoft.Net.Http(2.2.29 版)

      据我了解,这一切都归结为某些软件包之间的不兼容。我绝对无法让组件商店中的 Azure 移动服务正常工作。如果这是您使用的,请尝试手动安装软件包。最后,这对我有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多