Authentification de l'utilisateur
TransfertPro gère une authentification basée sur des tokens de type Bearer via le protocole OAuth2.
Récupération du Token auprès du serveur :
En C#
string login; // Login de l'utilisateur
string password; // Mot de passe de l'utilisateur
Token token; // Token d'authentification de l'utilisateur
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("https://ext.transfertpro.com/");
client.Timeout = TimeSpan.FromSeconds(30);
client.DefaultRequestHeaders.Accept.Clear();
StringContent queryString = new StringContent(string.Format("grant_type={0}&username={1}&password={2}",
"password", Uri.EscapeDataString(login), Uri.EscapeDataString(password)));
var result = client.PostAsync("/Token", queryString).ContinueWith(task =>
{
try
{
var response = task.Result;
if (response.IsSuccessStatusCode)
{
string json = response.Content.ReadAsStringAsync().Result;
token = JsonConvert.DeserializeObject(json);
}
else
{
// Gérer les codes status 400, 401, 403...
}
}
catch (Exception ex)
{
// Gérer les exceptions
}
});
result.Wait();
}
En JavaScript
async function getToken(login, password) {
const url = 'https://ext.transfertpro.com/Token';
let headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
let body = `grant_type=password&username=${encodeURIComponent(login)}&password=${encodeURIComponent(password)}`;
const response = await fetch(url, {
method: 'POST',
headers: headers,
body: body,
});
if (response.ok) {
const token = await response.json();
console.log('Token:', token);
return token;
} else {
console.error('Error:', response.statusText);
}
}
const login = 'votre login';
const password = 'votre mot de passe';
getToken(login, password);
Sur POSTMAN
Méthode : POST
URL : https://ext.transfertpro.com/Token
Headers :
Content-Type : application/x-www-form-urlencoded
Body :
Sélectionnez x-www-form-urlencoded
grant_type : password
username : votre_login
password : votre_mot_de_passe
Classe contenant les informations du Token :
public class Token
{
/// <summary>
/// Obtient ou définit la valeur du jeton d'accès
/// </summary>
public string Access_token { get; set; }
/// <summary>
/// Obtient ou définit le type de jeton
/// </summary>
public string Token_type { get; set; }
/// <summary>
/// Obtient ou définit la durée de validité du token
/// </summary>
public string Expires_in { get; set; }
/// <summary>
/// Obtient ou définit l'utilisateur associé au jeton
/// </summary>
public string UserName { get; set; }
/// <summary>
/// Obtient ou définit la date à laquelle le jeton a été demandé
/// </summary>
[JsonProperty(".issued")]
public DateTime Issued { get; set; }
/// <summary>
/// Obtient ou définit la date à laquelle le jeton expire
/// </summary>
[JsonProperty(".expires")]
public DateTime Expires { get; set; }
}
Passage du Token dans les requêtes :
protected HttpClient GetHttpClient()
{
var client = new HttpClient();
client.BaseAddress = new Uri("https://ext.transfertpro.com/");
client.Timeout = TimeSpan.FromMinutes(30);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); // Où token est l'instance du Token préalablement récupéré sur le serveur.
return client;
}