Аутентификация с помощью linkedin в приложении среднего стека

#node.js #angular #authentication #passport.js #linkedin-api

Вопрос:

поэтому я пытался реализовать вход в систему с помощью linkedin в своем приложении, и я не смог найти в Интернете ничего, что могло бы показать мне шаги от А до Я. Я реализовал бэкэнд и интерфейс отдельно, однако я не знаю, как связать их вместе

В бэкэнде я использую passportjs

Итак, вот что я сделал до сих пор:

внешний интерфейс

app.component.html

 <button click="loginWithLinkedin()">Linkedin</button>
 

приложение.компонент.ts

 window.location.href = `https://www.linkedin.com/uas/oauth2/authorization?response_type=codeamp;state=trueamp;client_id=${environment.LINKEDIN_API_KEY}amp;redirect_uri=${environment.LINKEDIN_REDIRECT_URL}amp;scope=${environment.LINKEDIN_SCOPE}`;
 

перенаправление.компонент.ts

 const linkedInToken = this.route.snapshot.queryParams["code"];
this.http.get('http://localhost:3000/user/auth/linkedin',
 { params: { token: linkedinToken }}).subscribe(res => {
        console.log(res);
 });
 

бэкэнд

 passport.use(new LinkedInStrategy({
      clientID: LINKEDIN_CLIENT_ID,
      clientSecret: LINKEDIN_CLIENT_SECRET,
      callbackURL: "http://127.0.0.1:8000/user/auth/linkedin/callback",
      scope: ['r_emailaddress', 'r_basicprofile'],
      passReqToCallback: true
    },
    function (req, accessToken, refreshToken, profile, done) {
      req.session.accessToken = accessToken;
      process.nextTick(function () {
        return done(null, profile);
      });
    }));


linkedinRouter.route('/auth/linkedin')
    .get(passport.authenticate('linkedin', { state: 'SOME STATE'  }),
    function(req, res){
        // The request will be redirected to LinkedIn for authentication, so this
        // function will not be called.
    });

linkedinRouter.route('/auth/linkedin/callback')
    .get( passport.authenticate('linkedin', { failureRedirect: '/' }),
        function (req, res) {
            return res.send('hello');
    });

 

Я не понимаю, как будет работать паспорт, и я не понимаю, как связать бэкэнд и интерфейс.
Я не знаю, является ли это правильным способом реализации аутентификации linkedin

Если у вас есть какие-либо статьи, которые могли бы помочь, или если вы можете исправить это, это действительно помогло бы, я застрял на пару дней.

Большое спасибо

Ответ №1:

Я приношу извинения, если я неправильно сформулировал вопрос или не знал, как задать его. Тем не менее, мне удалось заставить его работать, и я написал об этом среднюю статью. вот ссылка: https://nour-karoui.medium.com/linkedin-authentication-for-a-mean-stack-application-bd8542b2dc7f

Я надеюсь, что это может кому-то помочь !