- État Nouveau
- Pourcentage achevé
- Type Anomalie
- Catégorie Freebox OS → API
- Assignée à Personne
- Système d'exploitation Freebox Server V6 (Révolution)
- Sévérité Haute
- Priorité Très Basse
- Basée sur la version 4.7.3
- Due pour la version Non décidée
-
Échéance
Non décidée
- Votes
- Privée
Concerne le projet: Freebox Server (Ultra V9/ Pop V8/ Delta V7 / Revolution V6 / Mini 4K)
Ouverte par vialusant - 07/02/2023
Dernière modification par vialusant - 07/02/2023
Ouverte par vialusant - 07/02/2023
Dernière modification par vialusant - 07/02/2023
FS#37679 - API V10 retourne invalid_token après génération du hmac
Bonjour,
Je tente depuis plusieurs jours de taper via API ma freebox server revolution (A jour du dernier firmware)
J’ai donc bien suivis la DOC, et je suis en python 3.8
1 - Générer mon application, puis la confirmer sur le front en physique, j’ai le “status”:”granted” 2 - Je récupère le challenge
3 - Tentative d’ouverture de session via le password généré depuis le app_token et le challenge
J’obtiens en retour (tout est anonymisé) :
{'uid': '732edfg65fgaze', 'success': False, 'msg': "Erreur d'authentification de l'application", 'result': {'password_salt': 'M/iYdsf6a9dhyuiods9qsxtfpc+r1KFB', 'challenge': 'KRgdfez6r5sHHRTEuygfvVTGK'}, 'error_code': 'invalid_token'}
Je ne comprend pas ou la raison du soucis, si quelqu’un peut m’éclairer si je me suis trompé ou si c’est un bug
import datetime import hashlib import hmac import json import pickle import time import requests import urllib3 import sys import base64 def make_digest(message, key): key = bytes(key, 'UTF-8') message = bytes(message, 'UTF-8') digester = hmac.new(key, message, hashlib.sha1) #signature1 = digester.hexdigest() signature1 = digester.digest() #print(signature1) #signature2 = base64.urlsafe_b64encode(bytes(signature1, 'UTF-8')) signature2 = base64.urlsafe_b64encode(signature1) #print(signature2) return str(signature2, 'UTF-8') appid = "applicationidcustom" appname ="AppnameCustom" devicename ="Dlocalcustom" appversion = "1" apptoken = "dfgmonapptokengenererlorsdelauthOw0Udhyq/" #Etape 2 : Obtenir le challenge value avant de sauthentifier url = "http://mafreebox.freebox.fr/api/v10/login/" headers = {"Content-Type": "application/json; charset=utf-8"} response = requests.get(url, headers=headers) ReturnResponse = response.json() if ReturnResponse["success"] == False: sys.exit(0) #Etape 3 : Recuperation du token de session CurrentChallenge = ReturnResponse["result"]["challenge"] CurrentPassword = make_digest(CurrentChallenge, apptoken) url = "http://mafreebox.freebox.fr/api/v10/login/session/" data = {"app_id": appname, "password": CurrentPassword} headers = {"Content-Type": "application/json; charset=utf-8"} response = requests.post(url, headers=headers, json=data) ReturnResponse = response.json() print(ReturnResponse) #{'uid': '732edfg65fgaze', 'success': False, 'msg': "Erreur d'authentification de l'application", 'result': {'password_salt': 'M/iYdsf6a9dhyuiods9qsxtfpc+r1KFB', 'challenge': 'KRgdfez6r5sHHRTEuygfvVTGK'}, 'error_code': 'invalid_token'}
Chargement...
Activer les raccourcis clavier
- Alt + ⇧ Shift + l Se connecter/Se déconnecter
- Alt + ⇧ Shift + a Ouvrir une tâche
- Alt + ⇧ Shift + m Mes recherches
- Alt + ⇧ Shift + t Rechercher par ID de tâche
Liste des tâches
- o Ouvrir la tâche sélectionnée
- j Déplacer le curseur vers le bas
- k Déplacer le curseur vers le haut
Détails de la tâche
- n Tâche suivante
- p Tâche précédente
- Alt + ⇧ Shift + e ↵ Enter Modifier cette tâche
- Alt + ⇧ Shift + w Surveiller
- Alt + ⇧ Shift + y Fermer cette tâche
Édition de la tâche
- Alt + ⇧ Shift + s Enregistrer la tâche
Personne n'a de syntaxe fonctionelle à me fournir afin que je puisse tester ?
Je tourne en rond depuis 5 jours
Toujours d'actualité, j'ai refais une session debug, toujours un "invalid_token"