Xamarin.Auth не в состоянии завершить с Trakt
Я создаю приложение как клиент Trakt, используя Xamarin. Для аутентификации пользователей я использую Xamarin.Auth, потому что он кроссплатформенный. Однако после успешной аутентификации она не вызывает обработчик завершенных событий. Событие вызывается только после того, как я нажимаю кнопку "Назад", но оно возвращает нулевой объект Account и false IsAuthenticated. Мне интересно, если это потому, что URI перенаправления является недействительным.
Пожалуйста, смотрите мой код ниже.
[assembly: ExportRenderer(typeof(LoginView), typeof(LoginViewRenderer))]
namespace ShowsCalendar.Droid.ViewRenderer
{
public class LoginViewRenderer : PageRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
{
base.OnElementChanged(e);
var context = Forms.Context;
var baseAddress = ConfigHelper.TraktAPIURL;
var auth = new OAuth2Authenticator(
clientId: ConfigHelper.ClientID,
redirectUrl: new Uri("urn:ietf:wg:oauth:2.0:oob"),
scope: "",
authorizeUrl: new Uri(baseAddress + "/oauth/authorize?response_type=code")
);
auth.AllowCancel = true;
auth.Completed += AuthenticateCompleted;
var intent = auth.GetUI(context);
context.StartActivity(intent);
}
private void AuthenticateCompleted(object sender, AuthenticatorCompletedEventArgs e)
{
if (!e.IsAuthenticated)
{
return;
}
App.AccessToken = e.Account.Properties["access_token"].ToString();
AccountStore.Create().Save(e.Account, "Trakt");
}
}
}