Azure移动客户端4.0 - 如何使用LoginAsync?

时间:2017-06-13 20:09:45

标签: azure xamarin mobile xamarin.android azure-mobile-services

我使用了azure mobile net client 3.1.0.0。这是我在Android客户端中的旧代码:

 IMobileServiceClient client;
 //for Android
 //from Microsoft.WindowsAzure.Mobile.Ext
 var user = await client.LoginAsync(Forms.Context, provider);

现在我已更新到新版本4.0。我需要使用Google帐户授权。这是我在文档中找到的代码:

 IMobileServiceClient client;
 var token = new JObject {{"access_token", "access_token_value"}};
 user = await client.LoginAsync(provider, token);

如何在客户端Android上获得“access_token_value”? 请帮我。我需要一个小例子或对文档的引用。

2 个答案:

答案 0 :(得分:2)

我解决了这个问题。 1.有必要使用这个课程:

Microsoft.WindowsAzure.MobileServices.MobileServiceClient client;
var user = await client.LoginAsync(Forms.Context, provider, "{url_scheme_of_your_app}");

2.有必要将其添加到AndroidManifest.xml:

<activity android:name="com.microsoft.windowsazure.mobileservices.authentication.RedirectUrlActivity"
      android:launchMode="singleTop" android:noHistory="true">
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="{url_scheme_of_your_app}" android:host="easyauth.callback" />
</intent-filter>

&#34; url_scheme_of_your_app&#34; - 文本标识符。前 - &#34; app911&#34 ;;

  1. 将您的应用添加到Allowed External Redirect URLs

    实施例。 url app911://easyauth.callback

  2. 这是example

答案 1 :(得分:1)

根据您的描述,我创建了我的Xamarin.Android应用程序来测试此问题。对于Microsoft.Azure.Mobile.Client 4.0.0,我发现我的项目将在以下路径下引用sdk:

Microsoft.Azure.Mobile.Client.4.0.0\lib\netstandard1.4\Microsoft.Azure.Mobile.Client.dll

我会遇到你提到的同样问题。然后我尝试降级到Microsoft.Azure.Mobile.Client 4.0.0-alpha-001,我可以找到LoginAsync的预期扩展方法。此时,sdk将在以下路径下:

Microsoft.Azure.Mobile.Client.4.0.0-alpha-001\lib\monoandroid44\Microsoft.Azure.Mobile.Client.dll

此外,对于Azure Mobile Client SDK 3.1.0,参考路径如下所示:

Microsoft.Azure.Mobile.Client.3.1.0\lib\monoandroid\Microsoft.WindowsAzure.Mobile.Ext.dll

经过一些试验,我发现以下sdk支持LoginAsync的扩展方法,如下所示:

C:\Bruce\Thread Handling Projects\Bruce.AndroidApp\packages\Microsoft.Azure.Mobile.Client.4.0.0\lib\monoandroid71 enter image description here

  

我如何获得&#34; access_token_value&#34;在客户端Android?请帮我。我需要一个小例子或对文档的引用。

从您的旧代码中,我假设您正在使用服务器流认证,通过支持MonoAndroid >= 7.1的Microsoft.Azure.Mobile.Client 4.0.0使用服务器流,我假设您需要升级你的xamarin.android项目的Android版本。或者您需要降级到4.0.0之前的版本。此外,您可以参考client-managed flowserver-managed flow

<强>更新

将android版本更改为7.1后,我可以使用Microsoft.Azure.Mobile.Client 4.0.0,如下所示:

enter image description here enter image description here

要升级到Android 7.1,您可以参考here