Certaines ressources de l'API nécessitent que l'utilisateur soit connecté pour y accéder. Pour cela mypokerchipcount utilise le protocole wsse. Cela permet de ne pas faire transiter les informations en clair entre votre application et notre API lors de vos requêtes HTTP.

Pour cela il va falloir encrypter le mot de passe et rajouter des en-têtes dans votre requête HTTP. Prenons l'exemple de notre compte de test.

1. Il vous faut créer un "nonce" unique pour chaque requête: 67d283120cedda356b096947628e1db3

2. Vous devez également préciser la date de la création du nonce: 2018-12-12T17:37:53+01:00

3. Ensuite encrypter le tout:
base64(sha1("67d283120cedda356b096947628e1db3" + "2018-12-12T17:37:53+01:00" + base64(sha1("pa$$word"))))

4. Maintenant que votre mot de passe est encrypté vous pouvez devez rajouter l'en-tête HTTP suivante:

Authorization: WSSE profile="UsernameToken"
X-WSSE: UsernameToken Username="user@email.fr", PasswordDigest="OUFuNBPfz7Ti47vjgXHduZ8mhu4=", Nonce="67d283120cedda356b096947628e1db3", Created="2018-12-12T17:37:53+01:00"
PHP
<?php
$nonce = md5(uniqid());
$username = 'user@email.fr';
$password = 'pa$$word';
$created = date('c');

// Create password digest
$digest = base64_encode(hash('sha1', $password, true));
$passwordDigest = base64_encode(sha1($nonce.$created.$digest, true));

// Request
$context = stream_context_create(array(
    'http' => array(
        'method' => 'GET',
        'header' => 'Authorization: WSSE profile="UsernameToken"' . "\r\n" .
        'x-wsse:' . sprintf('UsernameToken Username="%s", PasswordDigest="%s", Nonce="%s", Created="%s"', $username, $passwordDigest, $nonce, $created)
    )
));

$content = file_get_contents('http://www.mypokerchipcount.com/api/user/profile', false, $context);