Aquesta és la continuació del post: https://open.substack.com/pub/aprenent/p/mhe-flipat-amb-replit-5-de-7
Per sort, tot i que diria més aviat per desgràcia, he implementat molts “Google Login” a la meva vida i de seguida vaig veure que els passos que em suggeria fer per aconseguir les credencials de Google eren errades, fallida, i als meus ulls, fallida garrafal. Aquesta sí que és una cagada de totes totes de l’Agent, al nivell que la podríem, categoritzar d’al·lucinació. Per què?
1 No cal habilitar l’API de Google+
2. Les credencials d’OAuth 2 no es creen així com així, t’has de recórrer 3 o 4 pantalles de configuració i posar el que toca i n’hi ha un laberint de permisos que si no els necessites millor no tocar.
3. I per rematar, et diu que posis un localhost de redirect
Avís: de la tercera no estic 100% segur, crec que es permet en entorns de desenvolupament, que “teòricament” on estava n’és un… però això corre al núvol de Replit, ves a saber si Google era capaç de tornar la trucada de l’OAuth allà indicant localhost…
Desconec com l’Agent genera aquesta recomanació, si la fa de zero o té un RAG o consultar accions habituals, sigui com sigui és incorrecta. Aquí una persona no tècnica es pot blocar de manera indefinida, no només perquè l’OAuth és habitualment un Cristo, sinó perquè si a sobre, et donen un manual malament, has begut oli.
Per acabar-ho d’adobar, els propis de Replit tenen una documentació de puta mare de com implementar un Google Login amb Python: https://docs.replit.com/additional-resources/google-auth-in-flask coi!, referència el teu propi contingut abans d'inventar-te’l andròmina del dimoni! O encamina a la documentació oficial del servei corresponent (avís a navegants, la documentació tècnica de Google és del pitjor, per dir-ho suau).
De fet, vaig fer servir aquesta documentació de Replit per anar amb el pas a pas fresc per configurar l’OAuth i un cop vaig tenir les credencials li vaig donar a l’Agent de Replit. Llavors vam arribar fins aquí:
Oops una imatge que no carrega? Resulta que l’Agent estava enllaçant directament a una imatge del logo de Google a WikiMedia, et felicito fill. El millor de tot és que en aquell moment tota WikiMedia estava caiguda (no crec que fos culpa meva haha) així que no sé si directament WikiMedia m'hagués blocat o potser des de l’entorn privat de programació no era accessible. En qualsevol cas, vaig haver de baixar una imatge jo i enllaçar-la a mà, que no m’anava a gastar uns cèntims per això.
M’ensumo que l’Agent no té capacitat de descarregar coses de manera autònoma, que no siguin dependències de Pip o NPM, i clar, després passen aquestes coses, i sort encara, perquè si hagués funcionat, encara podria haver publicat tranquil·lament amb aquest link extern no desitjat i qualsevol dia aleatori em tallen l’aixeta.
Vaig tenir un altre problema i és que, al cap i a la fi, Google em deia que demà m'afaitaràs, me n'anava a connectar contra ells des de l’entorn de desenvolupament, em fotia un prohibit i no arribava a veure la pantalla de login de Google.
Un altre moment d’aquests de bloqueig total per a una persona no tècnica. Jo ràpidament em vaig ensumar que si volia provar el Google Login, em tocava fer desplegament a la internet oberta.
El desplegament a Replit, com la seda, un botó, esculls el tipus de desplegament i en dos o tres minuts estàs a l’aire. Fet això, l'inici de sessió de Google ja em sortia, després em va donar per sac la redirect_url de callback, però amb un clàssic estira-i-arronsa el vaig fer anar.
Ja tenia un sistema d’autenticació de confiança a l'aplicació. Aquí l’Agent se’m va quedar molt curt, però no negaré que ho va agilitzar força. Normalment, quan estàs en entorns de desenvolupament molt tancats i has de donar les passes per fer funcionar una cosa d’aquestes, t’has d'emmerdar ja amb temes d’infraestructura i núvol, sempre hi ha algun permís amagat i aleatori que fa que la cosa no rutlli. El núvol “automàtic” de Replit et soluciona tot això, no són, però pioners en això, però s’agraeix que estiguin a l’estat de l’art de DevOps.
Però tenia un altre contratemps, tenir Google Login mola, tanmateix… ara només podia fer proves a la internet oberta i fent desplegaments, perquè la meva aplicació requeria un Google Login que només funciona “fora”. Afegirem més complexitat, fem que si estic desenvolupant a Replit, no em salti el Google Login, trivial veritat? Ni de conya.
De fet, per inèrcia i perquè ja començava a desconfiar de l’Agent, vaig demanar-li directament a o1.
La cosa és que aquí o1 també va fer aigües, combinat amb què no estic superfamiliaritzat amb Flask/gunicorn, tot i que les recomanacions semblaven adequades, en l’entorn de Replit no funcionava. Entre o1 i o1-mini vam donar voltes a fer servir variables al app.config en arrencar la web app, variables d’entorn… però res estava funcionant a Replit, llavors, una vegada més em va tocar passar-me barret “d’expert”, passar dels LLM i mirar-me una mica la cosa.
Al final això devia ser com un Docker i vaig trobar als fitxers de codi de Replit uns fitxers de configuració “.replit” que tenien una pinta molt semblant a un Dockerfile i allà es veia com es configurava el run del gunicorn. Amb aquest fitxer i el matís que estic a Replit, llavors o1 va reconduir i em va recomanar configurar al Secrets de Replit la variable d’entorn que discriminaria l’entorn per fer o no fer Google Login després. I en acabat vaig veure que a Replit es pot configurar d'una manera molt elegant que una variable de Secrets tingui un valor pel teu entorn de desenvolupament i un altre per al desplegament, per la qual cosa, ja tenia tot el necessari per muntar-ho.
Segurament una persona amb tot això més per la mà ho hauria resolt ràpidament, jo ho he après de pressa, i d’alguna manera em serveix com a exemple de com amb Replit + o1 + coneixements incomplets, s’arriba a la solució desitjada a una bona velocitat.