Bonjour,
nous utilisons l'API d'OVH pour sauvegarder sur nos serveurs les conversations téléphoniques enregistrées. Pour des tas de raisons, nous ne pouvons pas utiliser le PHP wrapper d'OVh (pas d'environnement compatible), mais nous utilisons les commandes cURL données en exemple de chaque API en PHP, et tout fonctionne à merveille.
le code ressemble à ça :
> $ch = curl_init();
>
> curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
> curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
> $headers = array();
> $headers] = 'Accept: application/json';
> $headers[] = 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxx';
> curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
> // CALL API pour récupérer tous les n° de téléphone (alias)
> curl_setopt($ch, CURLOPT_URL, 'https://eu.api.ovh.com/v1/telephony/***compte***/easyHunting');
$lignestel = curl_exec($ch);`
Tout fonctionne très bien... tant que j'ai un bearer acquis avec le bouton AUTHENTICATE de la console API de OVH.
mais je ne parviens pas à trouver de documentation sur la manière d'obtenir ce fichu token directement par API.
Il y a un guide (avec l'utilisation du wrapper OVH) sur le POST /auth/credential, mais la commande cURL ne correspond pas, car il faut envoyer dans la commande une "application key" et un "consumer key", et je ne parviens pas à trouver comment faire.
J'ai déjà mis des heures à trouver la page permettant de générer ces clefs ([c'est là) , mais maintenant je cale complètement sur la manière des les envoyer via Curl (en PHP) pour obtenir un token.
Quelqu'un aurait-il la solution à ce problème ?
Forfaits VoIP - API OVH en PHP : comment s'authentifier par API et obtenir un bearer
Related questions
- Configuration SIP VOH avec une application SIP sur android
55042
12.09.2019 07:50
- Sip ovh sur android ?
54276
04.06.2017 19:32
- Un numéro injoignable et support ovh ne répond pas aux demandes
50273
25.04.2018 09:06
- VOIP + 4G BOX besoin d'aide
45405
17.03.2017 11:13
- Configuration Zoiper pour Android 8.1.0
43914
18.01.2019 19:01
- Paramétrage Serveur SIP et compte SIP sur Huawei E5186s-22a
43312
21.12.2017 09:47
- Téléphonie en Belgique
43111
09.12.2016 07:31
- Cisco 8851 reçu non configuré
39609
07.06.2018 08:53
- Ip interdite sur Téléphone Yealink W60P
38958
03.01.2019 18:21
- Ligne tel OVH configurée sur BBOX3 Proximus
33436
07.12.2021 07:51
J'ai un peu progressé sur ce besoin,
j'arrive maintenant à utiliser l'API auth pour tenter de me logguer, mais la réponse de cette API est une URL de connexion avec des boutons, qui me redirige vers la page que je veux SANS me donner le fichu bearer
Ca ne sert donc strictement à rien.
Comment peut-on obtenir le bearer une fois qu'on se connecte ???
> // connexion d'authentification POST ***********************************************
> // CALL API pour s'authentifier - ETAPE 1
>
> $applicationKey = 'xxxxx';
> $applicationSecret = 'xxxxx';
> //$consumerKey = 'xxxxx';
> $requestBody = [
> 'accessRules' => [ ['method' => 'POST', 'path' => '*'] ],
> 'redirection' => 'http://192.168.1.5/idranet/OVH/',
> ]; // 'allowedIPs' => ['xxx.xxx.xxx.xxx/24']
>
> curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
> curl_setopt($ch, CURLOPT_HTTPHEADER, [ "X-Ovh-Application: $applicationKey", "X-Ovh-Application-Secret: $applicationSecret", "Content-Type: application/json", ]); // "X-Ovh-Consumer: $consumerKey",
> curl_setopt($ch, CURLOPT_POST, true);
> curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($requestBody));
>
> curl_setopt($ch, CURLOPT_URL, "https://eu.api.ovh.com/v1/auth/credential");
>
>
> try {
> $response = curl_exec($ch);
> }
> catch (Exception $e) { echo 'Error: ' . $e->getMessage(); }
>
> $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
> if (curl_errno($ch)) echo 'Error:' . curl_error($ch);
>
> if ($httpStatusCode >= 200 && $httpStatusCode < 300) {
> $responseData = json_decode($response, true);
> $validationUrl = $responseData['validationUrl'];
> echo "
SE CONNECTER
";> }
> else { throw new Exception("HTTP request failed with status code $httpStatusCode and response: $response"); }
RESULTAT :
Bonjour @XavierD68,
Vous trouverez les informations dans le guide suivant:
https://help.ovhcloud.com/csm/fr-api-getting-started-ovhcloud-api?id=kb_article_view&sysparm_article=KB0042789
^FabL
Apres une bonne semaine de recherches, j'ai reussi à m'en sortir grâce à cette doc
1 - créer un user (à faire 1 fois) :
POST /me/api/oauth2/client
# {# "callbackUrls": [],# "description": "To allow order",# "flow": "CLIENT_CREDENTIALS",# "name": "oauth-order-user"# }Bien noter le clientId et le clientSecret qui sont renvoyés
2 - récupérer le "bearer" avec :
auth_token=$(curl -s --request POST \--url 'https://www.ovh.com/auth/oauth2/token' \--header 'content-type: application/x-www-form-urlencoded' \--data grant_type=client_credentials \--data client_id=123456123456 \--data client_secret=098734sdkfiughhsiep876786 \--data scope=all| jq -r '.access_token' )merci NicoG pour cette contribution, mais ça ne fonctionne pas
Déjà l'URL
https://www.ovh.com/auth/oauth2/tokenn'existe pas et me renvoie une erreur {"error":"invalid_request"}Il faut utiliser l'URL de l'API qui est
https://eu.api.ovh.com/v1/auth/token,mais je suis surpris qu'il y a 3 mois vous ayez réussi quelque chose avec cette URL.Ensuite, quand je convertis tout ça en PHP, j'obtiens exactement la même erreur que plus haut (j'avais déjà créé un User et une application et obtenu le ClientID et le ClientSecret... qui ne servent à rien). L'erreur est encore et toujours :
{"class":"Client::Unauthorized","message":"You must login first"}$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'https://eu.api.ovh.com/v1/auth/token');curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials&client_id=4a9783d074153ac0&client_secret=4ce59a042dbfee5e4015620acca332be&scope=all|");$headers = array();$headers[] = 'Content-Type: application/x-www-form-urlencoded';curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);$result = curl_exec($ch);if (curl_errno($ch)) {echo 'Error:' . curl_error($ch);}curl_close($ch);echo "BEARER :".$result;