2014-03-21 6 views
0

Я разрабатываю приложение node.js и недавно выяснил, как аутентифицироваться через GitHub. Я хочу знать, есть ли способ вытащить фотографию профиля пользователя и имя, чтобы я мог отображать его в другом месте приложения. I found this question, но похоже, что Facebook и Google используют разные способы получения этих вещей.Вытаскивание имени пользователя и фотографии с помощью Passport.js

Может кто-нибудь указать мне в правильном направлении?

ответ

1

разработчики модуля Passport обычно нормализуется объект профиля пользователя, поэтому некоторые стандартные поля доступны одинаково во всех модулях таким образом:

  1. profile.id - назначенный провайдером
  2. profile.username - их 'логин'
  3. profile.displayName - полное имя пользователя
  4. profile.profileUrl - страница профиля пользователя на сайте провайдера
  5. profile.emails - массив адресов электронной почты, но, как правило, только один адрес

Таким образом, у вас уже есть имя пользователя и/или DisplayName , Один готов!

Они покрывают то, что постоянно необходимо, но провайдеры могут возвращать другую информацию. Это, естественно, зависит от (а) того, какие услуги предлагает поставщик, и (б) запрашиваемых областей.

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

Для фотографий/изображений профиля Github вы будете искать объект gravatar_id, чтобы получить URL-адрес пользователя.

Вы можете подтвердить это, используя шаблонный пример из passport-github для целей иллюстрации, вы могли бы сделать что-то вроде этого, чтобы увидеть, что Github раздает обратно к вам, чтобы вы могли оценить весь ответ поставщика:

passport.use(new GitHubStrategy({ 
    // authentication stuff here, per `passport-github` docs 
    }, 
    function(accessToken, refreshToken, profile, done) { 
     // skipping error handling &c for brevity... 
     fs.writeFile("githubProfile.json", JSON.stringify(profile)); 
     return done(null, profile); 
    }); 
    } 
)); 

Если вы правильно, вы можете получить URL-адрес пользователя с profile._json.gravatar для использования любым удобным вам способом (сохранение в базе данных, вставка страницы профиля и т. Д.).

+0

Я добавил вашу строку 'fs.writeFile' в свой код и увидел, что файл json создан. Милая! Знаете ли вы, что переменные, объявленные в app.js, доступны в моем приложении, повсеместно? Например, можно сделать идентификатор переменной для имени пользователя и вызвать его в других моих сценариях. –

+0

Это действительно начинается в совершенно новую и очень большую тему. Короткий ответ - «да». Если ваша программа коротка, вам нужно понять «переменную область» в javascript. Если ваше приложение разбито на более мелкие файлы, ознакомьтесь с документами и функциями модуля узла. Если вы не использовали javascript много, сделайте оба в этом порядке. ... и в то же время, если это ответит на ваш первоначальный вопрос, оценивается, если вы одобрили его как ответ. :) –

+0

Ах, кричит! Я смотрел на это в пятницу и забыл об этом после работы. Благодаря! –

Смежные вопросы