我正在开发一个node.js应用程序,最近想出了如何通过GitHub进行身份验证。我想知道是否有办法提取用户的个人资料照片和名称,以便我可以在应用程序的其他位置显示它。我found this question,但看起来Facebook和Google使用不同的方法来获取这些东西。
有人能指出我正确的方向吗?
答案 0 :(得分:1)
Passport模块开发人员通常会规范化用户配置文件对象,以便以这种方式在所有模块中以相同的方式提供某些标准字段:
因此,您已拥有用户名和/或显示名称。一个下来!
这些涵盖了一直需要的内容,但提供商可以返回其他信息。这自然取决于(a)提供商提供何种服务以及(b)所要求的范围。
特定于提供商的信息不会丢失。它存储在标准化属性旁边的profile._json
中......并且检查它将显示您还需要使用的其他内容。
对于Github个人资料照片/图片,您将寻找gravatar_id
属性来获取用户的照片网址。
您可以使用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);
});
}
));
如果正确,您可以从profile._json.gravatar
获取用户照片网址,以便以您需要的方式使用(保存到数据库,插入个人资料页面等)。