Litarvan / pronote-api

(Tout langage) API compatible Pronote 2020/2021
193 stars 87 forks source link

Académie de Rennes non compatible #21

Closed ZKillou closed 3 years ago

ZKillou commented 4 years ago

Bonjour, j'ai essayer de me connecter à Pronote depuis le NPM package pronote-lib qui utilise votre API mais je n'ai pas réussi à me connecter depuis l'Académie de Rennes. J'ai aussi essayer "toutatice" mais ça na pas fonctionné... Pourriez-vous m'aider ?

Litarvan commented 4 years ago

Bonjour, peux-tu me montrer ton erreur ?

ZKillou commented 4 years ago

UnhandledPromiseRejectionWarning: Not logged in

wow0000 commented 4 years ago

Cette erreur là viens de mon API et signifie que la connexion à pronote n'a pas encore été effectué, d'ou la présence d'un callback. Son problème original est que malgré que l'académie de Renne sois noté comme compatible il n'y a pas de fichier "ac-rennes" et il semblerait que toutatice ne fonctionne pas non plus.

3l0w commented 4 years ago

Salut j'ai une autre erreur je suis sur toutatice : Error: getaddrinfo ENOTFOUND www.toutatice.frctrl puis a la fin: Unknown CAS 'toutatice' cela viendrais de cette ligne la: https://github.com/Litarvan/pronote-api/blob/master/src/cas/toutatice.js#L29

LeGmask commented 4 years ago

Dans les fait l'erreur provient du fait que toutatice a changer de module d'authentification pour utiliser le module educonnect a la place de celui développer initialement 😉.

3l0w commented 4 years ago

ha vu sous cet angle c'est vrai que c'est logique.

Litarvan commented 4 years ago

Salut, peux-tu me dire si tu as toujousr ce problème avec la nouvelle version ?

ZKillou commented 4 years ago

Bonjour ! Je testerai cela lorsque j'aurai reçu mon nouveau code pronote (car je change d'établissement donc je n'ai plus accès à mon ancien compte) Je vous ferais part de mon résultat.

3l0w commented 4 years ago

TypeError: getParams is not a function
    at login (G:\pronote-api\src\cas\toutatice.js:15:18)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async getStart (G:\pronote-api\src\auth.js:71:12)
    at async Object.login (G:\pronote-api\src\auth.js:17:19)
    at async login (G:\pronote-api\src\server\auth.js:17:23)```
3l0w commented 4 years ago

j'ai fix l'erreur: api.js#L105

module.exports = {
    submitForm,
    getParams,
    getDOM,
    extractStart
};
3l0w commented 4 years ago

mais j'ai une autre erreur:

{
  "message": "getaddrinfo ENOTFOUND www.toutatice.frctrl",
  "name": "Error",
  "stack": "Error: getaddrinfo ENOTFOUND www.toutatice.frctrl\n    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:66:26)",
  "config": {
    "url": "https://www.toutatice.frCtrl",
    "method": "post",
    "data": "0=undefined&1=undefined&2=undefined&3=undefined&4=undefined&5=undefined",
    "headers": {
      "Accept": "application/json, text/plain, */*",
      "Content-Type": "application/x-www-form-urlencoded",
      "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0",
      "Cookie": "IDP_JSESSIONID=DA0CD165ED867EB59507DF31E1F1D383; SpCookie=PRIPASP2; BIGipServer~PROD-DMZ~PRIPASP_1-2=rd100o00000000000000000000ffffc0a8db03o80; JSESSIONID=CEACD7B5D2585F34AADD98BBB459BFC0; WAYF-COOKIE-HOST=wayf-1; Persistence=!zC7wi/r1yfmHSle7Y9PnjC+lK0ZjPabLUBRnIGdVW/GpCVrnkSboXXm5qDQ7vrIIz01SWJ/CGymJ6gkKJKkYHXKdLFaidE2MieZqtcQyckaI",
      "Content-Length": 71
    },
    "transformRequest": [
      null
    ],
    "transformResponse": [
      null
    ],
    "timeout": 0,
    "xsrfCookieName": "XSRF-TOKEN",
    "xsrfHeaderName": "X-XSRF-TOKEN",
    "maxContentLength": -1,
    "maxRedirects": 0
  },
  "code": "ENOTFOUND"
}

toutatice.js#L30

Litarvan commented 4 years ago

Le CAS ayant fondamentalement changé, il n'est dorénavant plus supporté par l'API

Litarvan commented 4 years ago

Alors surprise j'ai pu reprendre le code d'un autre CAS au même fonctionnement, je l'ai donc refait et ça devrait fonctionner. Pour tester, il faut que l'un de vous dézippe https://github.com/Litarvan/pronote-api/archive/master.zip dans son dossier node_modules/pronote-api/ et se connecte avec comme CAS 'toutatice' et ses identifiants educonnect. Dites moi si ça marche !

3l0w commented 4 years ago
{ code: 3, message: 'Wrong user credentials' }

Mes creds sont bon j'ai vérifié

Litarvan commented 4 years ago

Est-ce que tu as bien des identifiants educonnect ?

3l0w commented 4 years ago

yep je les ai testés sur educonnect avant de répondre

3l0w commented 4 years ago

Si tu est disponible je peut t'aidé a test Mon discord: Fl0w#3841

NooodyFR commented 4 years ago

Même problème de mon côté, il me retourne "Mauvais identifiants" alors que les identifiants sont corrects.

J'ai regardé dans les requêtes, et il arrive pourtant a trouver le lien de mon pronote, qui n'est affiché que sur mon "bureau virtuel" (valeur de "url + account.value + '.html'" dans le educonnect.js).

De plus, à la fin de l'authentification, lorsqu'il veut accéder à Pronote, la page passe par un intermédiaire qui affiche "Authentification en cours..." et qui ne contient pas PRONOTE (extractStart dans le api.js), donc il renvoie l'erreur des mauvais identifiants

J'espère pouvoir être utile :)

Litarvan commented 4 years ago

Okdac c'est bien ce que je pensais, merci de ce debug détaillé ! J'aurais besoin que tu me contactes sur Discord à Litarvan#0420 pour que je te fasse faire un test mais ça devrait pas être très dur :) (il me semble déjà t'avoir d'ailleurs de mémoire ?)

3low je te ferai tester aussi.

ZKillou commented 4 years ago

Bonjour ! Je suis désolé de ne pas avoir répondu car cette année, on ne passe plus par Toutatice mais Pronote directement... Désolé...

ThibautTrarbach commented 4 years ago

Hello,

Votre problème est résolut ?

Cdt Thibaut

bugsounet commented 4 years ago

bonjour, il semblerai que non ... je viens d'avoir un retour sur un de mes user que l'api de toutatice retourne mauvais identifiants... Je vais essayer d'avoir le max d'info d'ici quelques jours

ThibautTrarbach commented 4 years ago

Ok hésite pas a me faire des retours,

@Litarvan est pas mal occuper en ce moment. Je fait donc mon possible pour tout géré.

Cdt Thibaut

NooodyFR commented 4 years ago

Note : L'authentification bloque sur une page HTML qui n'est pas gérée par l'API, il faudrait ajouter son support (il y a un gros bout de code en JS qui montre comment l'authentification est faite dans cette page)

ThibautTrarbach commented 4 years ago

Possible de me send la page avec sont lien. Voir si c'est possible de recup des identifiant pour test.

Ps : Mon Discord : "Thibaut Black#0001"

Cdt Thibaut

3l0w commented 4 years ago

Cela a été fixé ?

ThibautTrarbach commented 4 years ago

Toujours pas, on attend @Litarvan qui doit être en partiel actuellement.

Cdt Thibaut

ebanDev commented 4 years ago

Bonjour, j'ai aussi un problème avec Toutatice je ne sais pas si c'est lié... (si ce n'est pas le cas je m'en excuse) quand je me connecte j'ai le droit à un "curl: (52) Empty reply from server"... Je précise que j'utilise GraphQL Ma requête :


👌  eban <~> 
   ❯❯  curl -X POST -H "Content-Type: application/json" -d '{
    "url": "http://03XXXXX.index-education.net/",
    "username": "XXXXX",
    "password": "XXXXX",
    "cas": "toutatice"
}' http://10.0.0.11:8000/auth/login
3l0w commented 4 years ago

@ebanDev J'ai une bonne nouvelle pour toi j'ai fait un fix: #172

ebanDev commented 4 years ago

Génial !! Tu saurais me dire comment installer pronote-api depuis ton fork ? Je connais très peu npm...

ebanDev commented 4 years ago

Si tu préfères, j'ai un discord : Eban#9456

3l0w commented 4 years ago

Rien de plus simple:

npm i https://github.com/3l0w/pronote-api.git
ebanDev commented 4 years ago

Ok je test ca, merci :)

ThibautTrarbach commented 4 years ago

Merge a l'instant dans la master, je vous laisse faire les test.

Cdt Thibaut

madsenfr commented 4 years ago

Bonjour, Je viens de tester et j'obtiens encore le message "Mauvais identifiants". Avec les id de démo ça fonctionne. J'ai vérifier mon url et mes id et bien décommenter /, cas/ dans l'exemple pour l'initialiser avec "toutatice". Par contre, j'utilise un fork https://github.com/madsenfr/pronote-api où la seule différente est la version mini de node.js à 10.21.0, qui ne provique pas d'erreur par ailleurs. Merci pour vos efforts, je suis à votre dispo pour tester.

ThibautTrarbach commented 4 years ago

Peux on voir ta config ?

Cdt Thibaut

madsenfr commented 4 years ago

Bien sûr, mais qu'entends-tu par config, tu veux avoir quoi comme infos ?

3l0w commented 4 years ago

Passe discord si tu veut je vais t'aider fl0w#3841

madsenfr commented 4 years ago

Je ne connais pas Discord, je suis sur la version en ligne : Ragnar56#8172

madsenfr commented 4 years ago

Suite à l'aide de 3l0w, la conclusion c'est que ça vient de ma version de Node.js utilisée (10.23.0). Pour être précis l'identification directement via pronote fonctionne, mais en passant par un CAS ça ne fonctionne plus. Je n'ai pas de message d'erreur, juste une exception au login. La suite dans https://github.com/Litarvan/pronote-api/issues/160

NooodyFR commented 4 years ago

Educonnect étant acutellement en maintenance, il se peut qu'il y ait des erreurs lors de la connexion via celui ci :)

ThibautTrarbach commented 3 years ago

Dispo dans l'api depuis peux.

Je close

Cdt Thibaut