API Authenticatie
Voor communicatie met de api zijn een koppeling sleutel en subscription key nodig.Hieronder wordt uitgelegd hoe een bearer token opgehaald kan worden van de OAuth server en hoe daarmee een request naar SnelStart gestuurd kan worden.
Koppelingsleutel
Deze sleutel kunnen gebruikers van de partner applicatie beheren met SnelStart Web, deze geeft toegang tot de administratie waar deze sleutel bij hoort.
Koppelen met oAuth
*Koppelen met oAuth is verplicht voor productiekoppelingen*
De sleutels worden geautomatiseerd verkregen zonder dat de klant sleutels handmatig hoeft uit te wisselen. Veiliger en klantvriendelijker!
Voor meer informatie over de oAuth authenticatie werking kijk hier.
Access token opvragen bij AuthServer
Het access token kan op twee manieren worden opgevraagd bij de auth server. De manier wordt gekozen door het grant_type op te geven. De waarde van grant_type kan zijn:
. Let op: het is belangrijk dat de credentials in de body worden gezet.
- clientkey
- password
. Let op: het is belangrijk dat de credentials in de body worden gezet.
POST https://auth.snelstart.nl/b2b/token HTTP/1.1 Content-Type: application/x-www-form-urlencoded grant_type=clientkey&clientkey={sleutel}Het acces_token uit de response body is nodig voor communicatie met de api.
{ "access_token":"acces_token", "token_type":"bearer", "expires_in":3599 }
Subscription key
Deze sleutel kan een partner beheren bij het menuitem Producten en geeft toegang tot de api.Data opvragen bij de APIVoorbeeld requestGET https://b2bapi.snelstart.nl/v2/relaties?$top=1 HTTP/1.1 Authorization: Bearer {acces_token} Ocp-Apim-Subscription-Key: {subscription_key}
Voorbeeld code
In het volgende voorbeeld wordt een Bearer token opgehaald en wordt dit token gebruikt om de eigen relatie op te halen. Deze code is ook hier te downloaden.
class Program
{
static void Main(string[] args)
{
var clientKey = ""; // Vul dit met de koppelingsleutel verkregen op https://web.snelstart.nl
string subscriptionKey = ""; // Vul dit met uw eigen key verkregen op https://b2bapi-developer.snelstart.nl
if (string.IsNullOrEmpty(clientKey) || string.IsNullOrEmpty(subscriptionKey))
{
Console.WriteLine("De variabelen apiKey en de clientkey moeten een waarde hebben");
}
else
{
var bearerToken = GetBearerToken(clientKey);
GetEigenRelatie(subscriptionKey, bearerToken);
}
Console.ReadLine();
}
private static string GetBearerToken(string clientkey)
{
using (var httpClient = new HttpClient())
{
var requestBody = new Dictionary<string, string>
{
{ "grant_type", "clientkey" },
{ "clientkey", clientkey }
};
Uri requestUri = new Uri("https://auth.snelstart.nl/b2b/token");
var message = httpClient.PostAsync(requestUri, new FormUrlEncodedContent(requestBody)).Result;
var json = message.Content.ReadAsStringAsync().Result;
dynamic response = JObject.Parse(json);
return response.access_token;
}
}
private static void GetEigenRelatie(string subscriptionKey, string bearerToken)
{
using (var httpClient = new HttpClient())
{
httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {bearerToken}");
var result = httpClient.GetAsync(new Uri("https://b2bapi.snelstart.nl/v2/relaties?$filter=Relatiesoort/any(r:r eq 'Eigen')")).Result;
var json = result.Content.ReadAsStringAsync().Result;
dynamic response = JArray.Parse(json);
Console.WriteLine(response[0].naam);
}
}
}