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#
// Ne mettez jamais ces valeurs en dur : lisez-les depuis votre configuration.
string login = ConfigurationManager.AppSettings["TransfertProLogin"];
string password = ConfigurationManager.AppSettings["TransfertProPassword"];
Token token = null; // 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();
// Le corps doit partir en application/x-www-form-urlencoded :
// FormUrlEncodedContent pose l'en-tête et encode les valeurs.
var queryString = new FormUrlEncodedContent(new Dictionary<string, string>
{
{ "grant_type", "password" },
{ "username", login },
{ "password", password }
});
try
{
using (HttpResponseMessage response = client.PostAsync("/Token", queryString).Result)
{
if (response.IsSuccessStatusCode)
{
string json = response.Content.ReadAsStringAsync().Result;
token = JsonConvert.DeserializeObject<Token>(json);
}
else
{
// Gérer les codes status 400, 401, 403...
}
}
}
catch (Exception ex)
{
// Gérer les exceptions
}
}
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.Access_token); // Où token est l'instance du Token préalablement récupérée sur le serveur.
return client;
}