【发布时间】:2015-01-07 05:06:26
【问题描述】:
我正在开发一个 node.js 应用程序,最近想出了如何通过 GitHub 进行身份验证。我想知道是否有办法提取用户的个人资料照片和姓名,以便我可以在应用程序的其他位置显示它。我found this question,但看起来 Facebook 和 Google 使用不同的方法来获取这些东西。
有人能指出正确的方向吗?
【问题讨论】:
标签: node.js github github-api passport.js
我正在开发一个 node.js 应用程序,最近想出了如何通过 GitHub 进行身份验证。我想知道是否有办法提取用户的个人资料照片和姓名,以便我可以在应用程序的其他位置显示它。我found this question,但看起来 Facebook 和 Google 使用不同的方法来获取这些东西。
有人能指出正确的方向吗?
【问题讨论】:
标签: node.js github github-api passport.js
Passport 模块开发人员通常会规范化用户配置文件对象,因此某些标准字段可以通过这种方式在所有模块中以相同方式使用:
因此,您已经有了用户名和/或显示名。一个下来!
这些涵盖了始终需要的内容,但提供者可以返回其他信息。这自然取决于 (a) 提供商提供的服务类型和 (b) 请求的范围。
提供者特定的信息不会丢失。它存储在规范化属性旁边的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);
});
}
));
如果正确,您可以从 profile._json.gravatar 获取用户照片 URL,以用于您需要的任何方式(保存到数据库、插入个人资料页面等)。
【讨论】:
fs.writeFile 行添加到我的代码中,并看到生成的 json 文件。甜的!你知道 app.js 中声明的变量是否在我的应用程序中普遍可用?就像,可以为用户名创建一个变量 ID 并在我的其他脚本中调用它。
system/account/githubProfile.json)来解决这个问题。然后我使用$.getJSON 来获取该文件。 console.log(data.username); 和 console.log(data._json.avatar_url); 会分别给你一个用户名和头像。