Я хочу войти в свое приложение xamarin.android через auth0. Я нашел этот урок, который описывает его так хорошо.
Я просто использую xamarin.android вместо "чистого" приложения для Android на c #.
Но у меня есть эта ошибка:
Как видите, у меня есть действительный ответ от auth0 с callback?code={code}
но, похоже, есть проблема с методом активации намерения. (он не может разобрать ответ в правильной схеме. Возможно, он предполагает, что это URL-адрес, и просто перенаправляет вызов через браузер).
Вот мой код MainActivity:
usings ***
namespace myApp.intake.Mobile.Droid
{
[Activity(Label = "App",
Icon = "@drawable/icon",
Theme = "@style/MainTheme",
MainLauncher = true,
LaunchMode = LaunchMode.SingleInstance,
ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
[IntentFilter(
new[] { Intent.ActionView },
DataScheme = "myApp.intake.mobile",
DataHost = "myApp-dev.auth0.com",
DataPathPrefix = "/android/myApp.intake.mobile/callback")]
public class MainActivity : FormsAppCompatActivity
{
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
client = new Auth0Client(new Auth0ClientOptions
{
Domain = "myApp-dev.auth0.com",
ClientId = "************", //real clientId
Activity = this
});
Forms.Init(this, bundle);
LoadApplication(new App());
this.PerformAuth0Login();
}
protected override async void OnNewIntent(Intent intent)
{
// I have to get redirected here but it just throw the mentioned error!!!!!!
base.OnNewIntent(intent);
var loginResult = await client.ProcessResponseAsync(intent.DataString, authorizeState);
var sb = new StringBuilder();
if (loginResult.IsError)
{
// logic to handle the error
}
// next business logic
}
#region Private Logic
private async void PerformAuth0Login()
{
// Prepare for the login
authorizeState = await client.PrepareLoginAsync();
// Send the user off to the authorization endpoint
var uri = Android.Net.Uri.Parse(authorizeState.StartUrl);
var intent = new Intent(Intent.ActionView, uri);
intent.AddFlags(ActivityFlags.NoHistory);
StartActivity(intent); //I think problem here..
}
#endregion
#region Private Fields
private Auth0Client client;
private AuthorizeState authorizeState;
#endregion
}
}
Спасибо за любую помощь заранее!