Login con Google desde Angular 16

Поделиться
HTML-код
  • Опубликовано: 12 сен 2023
  • Autenticación con google OAuth 2.0 desde Angular usando Client IDs de google cloud.
    Sigueme en mis redes sociales.
    Instagram: / neisercode
    X: / neisercp
    Repositorio: github.com/neiserdeveloper/ng...

Комментарии • 60

  • @neisercp
    @neisercp  10 месяцев назад +4

    Suscribete y comparte, que estoy pensando grabar una segunda parte(BackEnd)
    Escucho sus sugerencias ¿En que lenguaje desean que desarrollemos el BackEnd ? 😊

    • @chuny_dev
      @chuny_dev 10 месяцев назад +1

      Nest

    • @facundowehrli2322
      @facundowehrli2322 9 месяцев назад

      java

    • @neisercp
      @neisercp  9 месяцев назад

      @@facundowehrli2322 La segunda parte se hizo en NestJS voy a conciderar hacerlo en java, además se vienen mas videos de java muy interesantes.

    • @facundowehrli2322
      @facundowehrli2322 9 месяцев назад

      muchas gracias! me parecía interesante hacer un login completo sumandolé JWT + SpringSecurity@@neisercp

    • @santiagobruno_t1581
      @santiagobruno_t1581 Месяц назад

      @@neisercp gracias genio!! consulta hiciste el video del back con Java?

  • @SrQuesoH
    @SrQuesoH Месяц назад

    Maravilloso, simple, directo, no te das vueltas, simplemente un video grandioso
    gracias :'D

    • @neisercp
      @neisercp  Месяц назад +1

      Muchas gracias, me alegra que te haya servido, suscribete y comparte para llegar a mas personas.
      Saludos crack!

  • @programadorextraterrestre
    @programadorextraterrestre 6 месяцев назад

    Muy buen video, me viene como anillo al dedo para algo que estoy creando

    • @neisercp
      @neisercp  6 месяцев назад +1

      Que bueno que te sirvió, suscribte y comparte para seguir subiendo más contenido de este tipo.

  • @patriciopardo4238
    @patriciopardo4238 9 месяцев назад

    Excelente video! te felicito por tu dominio en el tema, lo explicaste de una manera muy simple.
    Sub++

    • @neisercp
      @neisercp  9 месяцев назад +1

      Muchas gracias, estoy preparando más contenido de este tipo, comparte para poder llegar a más personas.
      Saludos!

  • @henryviloria2898
    @henryviloria2898 9 месяцев назад

    Excelente video, me ayudó bastante en mi proyecto en la U

    • @neisercp
      @neisercp  9 месяцев назад

      Me alegra que te haya servido.

  • @renzo1255
    @renzo1255 3 месяца назад

    Excelente video !

    • @neisercp
      @neisercp  3 месяца назад +1

      Que bueno que te sirvió.
      Saludos!

  • @YILSONALEXISMALAMBOMADRIGAL
    @YILSONALEXISMALAMBOMADRIGAL 6 месяцев назад

    Gracias Bro buen video

    • @neisercp
      @neisercp  6 месяцев назад

      Muchas gracias.
      Saludos!

  • @naranjaapps5
    @naranjaapps5 29 дней назад

    Excelente!!!

    • @neisercp
      @neisercp  28 дней назад

      Que bueno que te sirvió, suscribete y comparte crack 😉

  • @ferlezcano
    @ferlezcano 9 месяцев назад

    Buenísima explicación! 👌

  • @francilvanlima
    @francilvanlima 3 месяца назад

    Muito bom!

    • @neisercp
      @neisercp  3 месяца назад

      Thank you !!!

  • @user-ft2te1cd2g
    @user-ft2te1cd2g 6 месяцев назад

    Grande hermano, deberías hacer un curso en udemy, te iría muy bien

    • @neisercp
      @neisercp  6 месяцев назад

      Muchas gracias estos comentarios me motivan a seguir creando este tipo de contenido, comparte.
      Un abrazo!

  • @yzzygomez
    @yzzygomez 8 месяцев назад

    Hola, luego del login exitoso, si voy a la ruta del Login y presiono el botón de Login con google, me vuelve a dejar hacer el proceso de inicio de sesión. No debería detectar la sesión?

    • @neisercp
      @neisercp  8 месяцев назад +1

      Hola Isaias, no aún te permite volver hacer el proceso, lo que debes hacer en un crear un Guard para que detecte la sesión, y te redireccione directo al "/main", aca te dejo el código de como sería.
      1. Crea un guard y valida si el usuario esta logueado, de ser asi solo redireccionas al "/main".
      export class NoAuthGuard {
      constructor(private authenticationService: AuthenticationService, private router: Router) { }
      canActivate():
      | Observable
      | Promise
      | boolean
      | UrlTree {
      if (this.authenticationService.isLoggedIn()) {
      this.router.navigate(['/home']);
      return false;
      }
      !this.authenticationService.isLoggedIn();
      return true;
      }
      }
      Nota: En el metodo isLoggedIn() debes validar si el token esta en el localstorage y si aún no expira.
      2. Agrega el Guard a tu routing de la page "/login" de esta manera.
      {
      path: 'login',
      component: LoginComponent,
      canActivate: [NoAuthGuard]
      }
      ¡Éxitos!

  • @chuny_dev
    @chuny_dev 10 месяцев назад

    O sea, que para iniciar sesión y tener control sobre ese usuario generado, se tendría que pasar esa información al backend si quiere tenerlo en mi db? cómo se haría el proceso de iniciar con google y tener control sobre la cuenta en un backend?

    • @neisercp
      @neisercp  10 месяцев назад +4

      Para gestionar los usuarios mediante una bd, se puede hacer, solo debes tener claro como quieres que funcione tu autenticación, el login con google solo sirve para que el user no tenga que estar creando una cuenta en tu app, ademas, para obtener información de la cuenta.
      Si quieres registrar el correo, nombres, picture en la bd, deberías hacer lo siguiente:
      1. La autenticacion que ves en el video.
      2. Crear un api en el back que reciba el token de Google.
      3. El token que recibes de Google debes ir comprobar en Google si es un token válido, si es así obtiene la información.
      4. Registras esos datos en tu bd
      5. Implementas jwt en base al resultado y en la api del punto 1 devuelves el token, pero el jwt que generaste en el back, para las peticiones de tus APIs.
      Espero te haya ayudado.
      Suscribete y comparte.
      Saludos!

  • @camilorroa8835
    @camilorroa8835 5 месяцев назад

    que hago cuando el getIdentityClaims es null o no trae ninguna de los scopes?

    • @neisercp
      @neisercp  5 месяцев назад +1

      Si estas recibiendo un null lo mas probable es que no te estas autenticando, verifica si tienes un token, puedes usar este metodo:
      this.oauthService.hasValidAccessToken()

  • @AndreyRojasGarcia-cw1wv
    @AndreyRojasGarcia-cw1wv 5 месяцев назад

    Saludos, puedo hacer lo mismo con Angular 17?? Y cuando creo el proyecto, no me sale el app.modules, ese es indispensable?

    • @neisercp
      @neisercp  5 месяцев назад

      No hay problema, tambien lo puedes hacer en 17, en el canal subi un video de angular 17. fijate como importo las dependencias, y esto que tienes en el modulo, OAuthModule.forRoot(), lo colocas a nivel de componente.

  • @hisoka-dddd1452
    @hisoka-dddd1452 3 месяца назад

    Amigo me sirvio de mucha ayuda este tutorial , me gustaria mucho si podrias aplicar este ejemplo pero ahora utilizando los servicios de facebook , estoy buscando tutoriales y guias pero no me han resultado mucho , es posible trabajar con algunas dependencia para hacer login con facebook similar a lo que has hecho para Google?

    • @neisercp
      @neisercp  3 месяца назад +1

      Si claro veré si lo comtemplo en un siguiente video.
      Saludos

  • @hisoka-dddd1452
    @hisoka-dddd1452 3 месяца назад

    Hola @Neiser , tengo una consulta , yo lo estoy trabajando en un proyecto de angular : Angular CLI: 15.2.11 Node: 18.15.0 , y me sale este error: ERROR Error: Uncaught (in promise): NullInjectorError: R3InjectorError(LoginModule)[LoginService -> LoginService -> OAuthService -> OAuthService -> OAuthService]:
    NullInjectorError: No provider for OAuthService!

    • @hisoka-dddd1452
      @hisoka-dddd1452 3 месяца назад

      Actualizacion: Descubri el problema y era porque no habia colocado en el app.module.ts lo siguiente : OAuthModule.forRoot() , sin embargo me sale este error: RROR Error: Uncaught (in promise): issuer must use HTTPS (with TLS), or config value for property 'requireHttps' must be set to 'false' and allow HTTP (without TLS).

    • @neisercp
      @neisercp  3 месяца назад

      @@hisoka-dddd1452 Ese error surge como una medida de seguridad para asegurar de que las credenciales de autenticación se transmitan de manera segura. Sin embargo, durante el desarrollo local, es posible que desees desactivar temporalmente esta restricción para trabajar con un server de autorización que no tenga configurado https, para resolver ese problema puedes ajustar la configuración de la autenticación, esto puedes agregar a tu config
      requireHttps: false
      Eso colócalo dentro de tu AuthConfig, a y no olvides dejarlo en true cuando despliegues tu app.
      Saludos!

  • @eduardohernandezanzardo1378
    @eduardohernandezanzardo1378 14 дней назад

    Hola saludos muy buen contenido, tengo una pregunta, en el caso de que quiera hacer ese flujo utilizando oauth pero con un api de odoo por ejemplo que tenga el mismo flujo para chequear si el token es valido y asi me envie valores customizados del usuario, tendrias algun ejemplo al respecto del flujo en cuestión?, no un ejemplo exacto sino un ejemplo del flujo pero tirando a un api para que retorne valores customizados del usuario , buena jornada

    • @neisercp
      @neisercp  12 дней назад

      No tengo un ejemplo especifico de ello, pero seria muy similiar, solamente que enves de recuperar la informacion de google se deberia llamar al API.

  • @lodden7
    @lodden7 9 месяцев назад

    Buenas, estoy teniendo un problema con los Guards. Lo que yo querría hacer es que una vez el usuario ingresó no pueda volver a la landing page porque esa página es pública, es decir para todos los usuarios previo al logueo pero inaccesible post-logeo. Me podrías dar un ejemplo de esto?

    • @neisercp
      @neisercp  9 месяцев назад +1

      Hola Ezequiel, entiendo, lo que puedes hacer es un no-guard de la siguiente manera:
      1. Crea un guard y valida si el usuario esta logueado, de ser asi solo redireccionas a tu page "/home" aca te dejo el code.
      export class NoAuthGuard {
      constructor(private authenticationService: AuthenticationService, private router: Router) { }
      canActivate():
      | Observable
      | Promise
      | boolean
      | UrlTree {
      if (this.authenticationService.isLoggedIn()) {
      this.router.navigate(['/home']);
      return false;
      }
      !this.authenticationService.isLoggedIn();
      return true;
      }
      }
      Nota: En el metodo isLoggedIn() debes validar si el token esta en el localstorage y si aún no expira.
      2. Agrega el Guard a tu routing de la page "/login" de esta manera.
      {
      path: 'login',
      component: LoginComponent,
      canActivate: [NoAuthGuard]
      }
      Con eso es suficiente para lograr ello.
      ¡Éxitos!

    • @yzzygomez
      @yzzygomez 8 месяцев назад

      segun veo el tiempo de expiracion es de 1 hora, una vez se vence se renueva? o como podria extender ese tiempo?@@neisercp

  • @SoyJavero
    @SoyJavero 6 месяцев назад

    de pura casualidad sabes o conoces algún recurso para implementar okta authentication con angular? uso la versión 8 pero puedo actualizar

    • @neisercp
      @neisercp  6 месяцев назад +1

      Si claro la librería más usada es @okta/okta-angular, también recuerda tener una cuenta de desarrollador en okta, posiblemente lo contemple en un siguiente video.
      Saludos!

    • @SoyJavero
      @SoyJavero 6 месяцев назад

      @@neisercp por favor quiero implementarlo en mi trabajo y te mando cafecito

  • @joaquinvargas6842
    @joaquinvargas6842 9 месяцев назад

    Hola primero muchas gracias por el video muy bueno, sabes hice todo lo que me dijiste y al parecer no me acepta el redirectUri: window.location.origin + '/main', me sale un error de Acceso bloqueado: la solicitud de esta aplicación no es válida, averiguando me sale que es por el redirect, alguna sugerencia?

    • @neisercp
      @neisercp  9 месяцев назад

      Revisa el link de redirección que se crea al momento de generar la key google, además recuerda la url de origen.

    • @programadorextraterrestre
      @programadorextraterrestre 6 месяцев назад

      ojo con colocar en la info de la pantalla de consentimiento, ese fue el origen de mi error, cuando le dejé solo funcionó

  • @kienngo1391
    @kienngo1391 9 месяцев назад

    thanks much, please, how to get DOB and Gender from google account?

    • @neisercp
      @neisercp  9 месяцев назад +1

      Exceltent, to get information account google, DOB, gender, etc, you can call API people google with token return to you in authetication, besides, you shoud enable permissions in Contacts API, can you check this links, there is an example to call api.
      developers.google.com/people/api/rest/v1/people/get
      console.cloud.google.com/apis/library/contacts.googleapis.com
      Greeting!

    • @kienngo1391
      @kienngo1391 9 месяцев назад

      @@neisercp Can you help me with details? I have tried many ways

    • @neisercp
      @neisercp  9 месяцев назад

      @@kienngo1391 This is how the request should be, look.
      const accessToken = 'TOKEN_GOOGLE'; // The acces token you obtained during authetication
      const headers = new HttpHeaders({
      'Authorization': `Bearer ${accessToken}`
      });
      // Make a request to the Google API to obtain the user profile infomation
      this.httpClient.get('www.googleapis.com/plus/v1/people/me', { headers: headers })
      .subscribe((userData) => {
      const dateOfBirth = userData.birthday;
      const gender = userData.gender;
      console.log('DOB:', dateOfBirth);
      console.log('gENDER:', gender);
      });

  • @kangurinho9418
    @kangurinho9418 6 месяцев назад

    Muy bueno el video, estoy usando angular 17 y me da fallos como este y ns solucionarlo: ERROR NullInjectorError: R3InjectorError(Standalone[_AppComponent])[OAuthLogger -> OAuthLogger -> OAuthLogger]:
    NullInjectorError: No provider for OAuthLogger!
    En Angular 16 no había que usar los providers?

    • @neisercp
      @neisercp  6 месяцев назад

      La importación de la library es OAuthModule, y no uso ningún provider, por favor puedes detallar el error, o clonar el proyecto que deje en git, para comparar, o sino comparte tu repo y lo puedo revisar.
      Saludos!

    • @kangurinho9418
      @kangurinho9418 6 месяцев назад

      Gracias@@neisercp pero ya encontré el error :)

    • @neisercp
      @neisercp  6 месяцев назад

      Me alegra que lo hayas podido solucionar@@kangurinho9418

    • @hisoka-dddd1452
      @hisoka-dddd1452 3 месяца назад

      @@kangurinho9418 A que se debia?