Попытался реализовать получение токена Вконтакте для android, через xamarin.auth, выдает невнятную ошибку
Весь код взял из этой статьи https://itnan.ru/post.php?c=1&p=332970
public Task<LoginResult> Login()
{
completionSource = new TaskCompletionSource<LoginResult>();
string clientId = "Тут мой id, убрал для скриншота";
string scope = "audio";
var auth = new OAuth2Authenticator
(
clientId: clientId,
clientSecret: "тут мой секретный ключ из приложения vk",
scope: scope,
authorizeUrl: new Uri("https://oauth.vk.com/authorize"),
redirectUrl: new Uri("https://oauth.vk.com/blank.html"),
accessTokenUrl: new Uri("https://oauth.vk.com/access_token")
)
{
AllowCancel = true
};
auth.Completed += AuthOnCompleted;
//Android.App.Application.Context.StartActivity(auth.GetUI());
Forms.Context.StartActivity(auth.GetUI(Forms.Context));
return completionSource.Task;
}
Выдает ошибку, которая на скриншоте после авторизации.
Ошибка выпрыгивает после строчки return completionSource.Task;
Интересно, что ошибка выпрыгивает до тех пор пока не закрою приложение, то есть следующее окно ошибки выпрыгивает поверх предыдущего и так до бесконечности. На скриншоте можно увидеть жирнючую тень от многократно вызванных окон
Сам LoginResult
:
public class LoginResult
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string ImageUrl { get; set; }
public string UserId { get; set; }
public string Token { get; set; }
public DateTimeOffset ExpireAt { get; set; }
public LoginState LoginState { get; set; }
public string ErrorString { get; set; }
}
public enum LoginState
{
Failed,
Canceled,
Success
}
Источник: Stack Overflow на русском