using System.Threading.Tasks; using Newtonsoft.Json; using Refit; using System.Net.Http; using System; namespace wms_xamarin { public class LoginApi { private static readonly string baseUrl = "https://example.com"; public async Task loginWithCredentials(string login, string password) { var httpClient = new HttpClient(new HttpLoggingHandler(/*new NativeMessageHandler()*/)){ BaseAddress = new Uri(baseUrl)}; var api = RestService.For(httpClient); var request = new LoginRequest {Email = login, Password = password}; return await api.LoginWithOAuth(request); } } public class LoginRequest { [AliasAs("email")] public string Email { get; set; } [AliasAs("password")] public string Password { get; set; } [AliasAs("clientId")] public string ClientId => "cientId"; [AliasAs("grant_type")] public string GrantType => "password"; } public class LoginResponse { [AliasAs("access_token")] public string AccessToken { get; set; } [AliasAs("token_type")] public string TokenType { get; set; } [AliasAs("expires_in")] public string ExpiresIn { get; set; } [AliasAs("refresh_token")] public string RefreshToken { get; set; } [AliasAs("created_at")] public string CreatedAt { get; set; } } [Headers("User-Agent: Xamarin")] public interface ILoginApi { [Post("/oauth/token")] Task LoginWithOAuth([Body(BodySerializationMethod.UrlEncoded)] LoginRequest request); } }