разработчики модуля Passport обычно нормализуется объект профиля пользователя, поэтому некоторые стандартные поля доступны одинаково во всех модулях таким образом:
- profile.id - назначенный провайдером
- profile.username - их 'логин'
- profile.displayName - полное имя пользователя
- profile.profileUrl - страница профиля пользователя на сайте провайдера
- 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
для использования любым удобным вам способом (сохранение в базе данных, вставка страницы профиля и т. Д.).
Я добавил вашу строку 'fs.writeFile' в свой код и увидел, что файл json создан. Милая! Знаете ли вы, что переменные, объявленные в app.js, доступны в моем приложении, повсеместно? Например, можно сделать идентификатор переменной для имени пользователя и вызвать его в других моих сценариях. –
Это действительно начинается в совершенно новую и очень большую тему. Короткий ответ - «да». Если ваша программа коротка, вам нужно понять «переменную область» в javascript. Если ваше приложение разбито на более мелкие файлы, ознакомьтесь с документами и функциями модуля узла. Если вы не использовали javascript много, сделайте оба в этом порядке. ... и в то же время, если это ответит на ваш первоначальный вопрос, оценивается, если вы одобрили его как ответ. :) –
Ах, кричит! Я смотрел на это в пятницу и забыл об этом после работы. Благодаря! –