Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

164
Views
Facebook OAuth no devuelve el correo electrónico del usuario

Estoy siguiendo este tutorial sobre Spring Boot con OAuth: https://spring.io/guides/tutorials/spring-boot-oauth2/

En la aplicación 'clic', agregué:

 security: oauth2: client: clientId: 233668646673605 clientSecret: 33b17e044ee6a4fa383f46ec6e28ea1d scope: email <------- ***** THIS IS WHAT I ADDED ***** --------- accessTokenUri: https://graph.facebook.com/oauth/access_token userAuthorizationUri: https://www.facebook.com/dialog/oauth tokenName: oauth_token authenticationScheme: query clientAuthenticationScheme: form resource: userInfoUri: https://graph.facebook.com/me logging: level: org.springframework.security: DEBUG

Usé una de mis cuentas de Facebook de prueba y todo funcionó. El objeto Principal contenía la dirección de correo electrónico. Las credenciales en el archivo de configuración mencionado anteriormente formaban parte del tutorial.

Para probar las cosas con mi propia aplicación registrada en OAuth, fui a mi cuenta habitual y creé una cuenta de desarrollador de Facebook con una aplicación que usaba el inicio de sesión de Facebook como producto.

Luego coloqué mi propio ID de cliente y secreto de cliente en el archivo YAML, volví a empaquetar la aplicación y la ejecuté.

La dirección de correo electrónico para la misma cuenta de Facebook de prueba no se recibió de Facebook.

¿Alguna idea de por qué funcionó el del tutorial y el mío no?

Así es como se ve mi configuración de inicio de sesión de Facebook: ingrese la descripción de la imagen aquí

¿Algunas ideas?

¡Cualquier ayuda sería muy apreciada!

¡Gracias!

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Ok, FINALMENTE lo descubrí, así que lo publico aquí para cualquier otra persona que pueda encontrarse con esto. No pude encontrar la respuesta tan fácilmente.

Escribiste ese tutorial antes de que Facebook Graph API cambiara.

Ahora, solo porque especifica 'alcance: correo electrónico', solo le permite obtener el correo electrónico (después de que el usuario lo apruebe). Sin embargo, para recibir el correo electrónico, debe especificarlo explícitamente en la URL. Entonces, en la configuración anterior, esta línea cambiaría (no los '?fields=email,name' adicionales):

 userInfoUri: https://graph.facebook.com/me?fields=email,name

Este es un cambio en la API de Facebook a partir de la versión 2.4. Está en 2.8 a partir de este escrito. Vea este enlace: https://developers.facebook.com/blog/post/2015/07/08/graph-api-v2.4/

(En particular, preste atención a lo que dice en la tercera viñeta, comenzando con 'Menos campos predeterminados para un rendimiento más rápido...'

¡Espero que esto ayude a alguien!

over 4 years ago · Santiago Trujillo Report

0

Sé que esto es un poco antiguo, pero por razones de seguridad para cualquiera que venga aquí en busca de ayuda:

NO PUBLICES PÚBLICAMENTE TU CLIENT_ID o CLIENT_SECRET ni los tengas en tu app.js, etc. El protocolo adecuado es crear un archivo .env (el .delante indica que permanece oculto, también agregue este archivo ".env" a su archivo ".ignore" para que no se cargue en github ni en ningún otro repositorio que usted subir archivos a.) dentro del archivo .env, debe ingresar líneas como: FACEBOOK_CLIENT_ID: 123456789 (donde el número es lo que se le da) FACEBOOK_CLIENT_SECRET: 987654321 (nuevamente se le da este número)

*Tenga en cuenta que todo lo que se encuentra a la izquierda de : está en mayúsculas con guiones bajos, y no debe haber espacios a ningún lado de : Tampoco comas o ; entre lineas

luego, en su aplicación, debe referirse a estos como process.env.FACEBOOK_CLIENT_ID y process.env.FACEBOOK_CLIENT_SECRET (o como los haya llamado siempre que coincida más el "process.env." anterior.

por último, deberá solicitarlo mediante:

1) instalarlo (npm i dotenv) en el campo de comandos o similar.

2) require("dotenv").config(); en la línea 1 del código de su aplicación (o lo más cerca posible antes de otros requisitos)

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!