Recientemente, he estado tratando de implementar el inicio de sesión de Facebook en mi aplicación nodejs, seguí estos artículos, que son breves y simples https://medium.com/authpack/facebook-auth-with-node-js-c4bb90d03fc0 , el único problema aquí está en los datos del usuario. No puedo obtener la foto de perfil del usuario. Intenté agregar una imagen de perfil profile_pic a los ámbitos, pero simplemente no funciona a continuación. Compartiré mi código. Código para index.js. Este es mi archivo de servidor principal donde express y el código de autenticación de Facebook miente, es fácil y directo
const express = require("express"); const app = express(); const queryString = require("query-string"); const axios = require("axios"); app.set("view engine", "ejs"); const clientID="" const clientSecret="" const stringifiedParams = queryString.stringify({ client_id: clientID, redirect_uri: "http://localhost:3000/auth/redirect", scope: ["email", "user_friends"].join(","), // comma seperated string response_type: "code", auth_type: "rerequest", display: "popup", }); const facebookLoginUrl = `https://www.facebook.com/v4.0/dialog/oauth?${stringifiedParams}`; app.get("/", (req, res) => { res.render("login", { url: facebookLoginUrl }); }); app.get("/auth/redirect", async (req, res) => { // here we are supposed to receive an code // code is used to get an access token // access token allows us to get data from facebook servers const code = req.query.code; try { const { data } = await axios({ url: "https://graph.facebook.com/v4.0/oauth/access_token", method: "get", params: { client_id: clientID, client_secret: clientSecret, redirect_uri: "http://localhost:3000/auth/redirect", code, }, }); console.log("CODE>>", code); const access_token = data.access_token; console.log("ACCESS_TOKEN>>", access_token); const { data: info } = await axios({ url: "https://graph.facebook.com/me", method: "get", params: { fields: ["id", "email", "first_name", "last_name"].join(","), access_token: access_token, }, }); console.log("we go the data back:>>>>", info); res.render("home"); } catch (err) { console.log("there was an err:", err.message); } }); app.listen(3000, () => { console.log("server started on port 3000"); });este es mi código. Creo que debe haber alguna clave especial para agregar en la sección de ámbitos o campos. No lo sé, pero lo he intentado mucho y me está estresando, gracias chicos.