Skip to content

Latest commit

 

History

History
52 lines (42 loc) · 3.89 KB

File metadata and controls

52 lines (42 loc) · 3.89 KB
id title challengeType videoUrl localeTitle
589a69f5f9fc0f352b528e71
Implementation of Social Authentication II
2
Implementación de la autenticación social II

Description

Como recordatorio, este proyecto se está construyendo sobre el siguiente proyecto de inicio en Glitch , o clonado desde GitHub . La última parte de la configuración de la autenticación de GitHub es crear la estrategia en sí. Para esto, deberá agregar la dependencia de 'passport-github' a su proyecto y requerirlo como GithubStrategy como const GitHubStrategy = require('passport-github').Strategy; . Para configurar la estrategia de GitHub, debe indicar al pasaporte que use una instancia de GithubStrategy , que acepta 2 argumentos: un objeto (que contiene clientID , clientSecret y callbackURL ) y una función a la que se debe llamar cuando un usuario se autentica correctamente, lo cual determinaremos si el usuario es nuevo y qué campos guardar inicialmente en el objeto de la base de datos del usuario. Esto es común en muchas estrategias, pero algunas pueden requerir más información como se describe en el github README de esa estrategia específica; Por ejemplo, Google también requiere un alcance que determine qué tipo de información solicita su devolución y le pide al usuario que apruebe dicho acceso. La estrategia actual que estamos implementando tiene su uso descrito aquí , ¡pero lo estamos haciendo todo aquí en freeCodeCamp! Así es como debe verse su nueva estrategia en este punto:
 passport.use (nuevo GitHubStrategy ({
    ID de cliente: process.env.GITHUB_CLIENT_ID,
    clientSecret: process.env.GITHUB_CLIENT_SECRET,
    callbackURL: / * INSERT CALLBACK URL INTRODUCIDO A GITHUB AQUÍ * /
  }
  función (accessToken, refreshToken, perfil, cb) {
      console.log (perfil);
      // Lógica de base de datos aquí con devolución de llamada que contiene nuestro objeto de usuario
  }
)); 
Su autenticación no será exitosa todavía, y en realidad arrojará un error, sin la lógica de la base de datos y la devolución de llamada, ¡pero debe iniciar sesión en su consola con su perfil de GitHub si lo intenta! Envía tu página cuando creas que lo has hecho bien.

Instructions

Tests

tests:
  - text: Dependencia añadida
    testString: 'getUserInput => $.get(getUserInput("url")+ "/_api/package.json") .then(data => { var packJson = JSON.parse(data); assert.property(packJson.dependencies, "passport-github", "Your project should list "passport-github" as a dependency"); }, xhr => { throw new Error(xhr.statusText); })'
  - text: Dependencia requerida
    testString: 'getUserInput => $.get(getUserInput("url")+ "/_api/server.js") .then(data => { assert.match(data, /require.*("|")passport-github("|")/gi, "You should have required passport-github"); }, xhr => { throw new Error(xhr.statusText); })'
  - text: Estrategia de GitHub configurada correctamente hasta ahora
    testString: 'getUserInput => $.get(getUserInput("url")+ "/_api/server.js") .then(data => { assert.match(data, /passport.use.*new GitHubStrategy/gi, "Passport should use a new GitHubStrategy"); assert.match(data, /callbackURL:( |)("|").*("|")/gi, "You should have a callbackURL"); assert.match(data, /process.env.GITHUB_CLIENT_SECRET/g, "You should use process.env.GITHUB_CLIENT_SECRET"); assert.match(data, /process.env.GITHUB_CLIENT_ID/g, "You should use process.env.GITHUB_CLIENT_ID"); }, xhr => { throw new Error(xhr.statusText); })'

Challenge Seed

Solution

// solution required