【问题标题】:Pulling user's name and photo with Passport.js使用 Passport.js 提取用户名和照片
【发布时间】:2015-01-07 05:06:26
【问题描述】:

我正在开发一个 node.js 应用程序,最近想出了如何通过 GitHub 进行身份验证。我想知道是否有办法提取用户的个人资料照片和姓名,以便我可以在应用程序的其他位置显示它。我found this question,但看起来 Facebook 和 Google 使用不同的方法来获取这些东西。

有人能指出正确的方向吗?

【问题讨论】:

    标签: node.js github github-api passport.js


    【解决方案1】:

    Passport 模块开发人员通常会规范化用户配置文件对象,因此某些标准字段可以通过这种方式在所有模块中以相同方式使用:

    1. profile.id - 由提供商分配
    2. profile.username - 他们的“登录名”
    3. profile.displayName - 用户的全名
    4. profile.profileUrl - 提供商网站上的用户个人资料页面
    5. profile.emails - 电子邮件地址数组,但通常只有一个地址

    因此,您已经有了用户名和/或显示名。一个下来!

    这些涵盖了始终需要的内容,但提供者可以返回其他信息。这自然取决于 (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 并在我的其他脚本中调用它。
    • 这真的是一个全新的、非常大的话题。简短的回答是“是”。如果您的程序很短,则需要了解 javascript 中的“可变范围”。如果您的应用程序被分解成更小的文件,请阅读节点的模块文档和函数。如果您没有太多使用 javascript,请按此顺序进行。 ...同时,如果这回答了您的原始问题,如果您批准它作为答案,我们将不胜感激。 :)
    • 啊,哎呀!我星期五在看这个,下班后忘记了。谢谢!
    • 对于将来遇到此问题的任何人...如果您使用的是 node.js,您将知道您将无法访问应用文件夹之外的文件。如果您尝试访问已编译的 JSON 文件,这会很烦人,因此我通过确保它是在应用程序中生成的(在我的情况下为system/account/githubProfile.json)来解决这个问题。然后我使用$.getJSON 来获取该文件。 console.log(data.username);console.log(data._json.avatar_url); 会分别给你一个用户名和头像。
    • 为了清楚起见,您不必将数据保存到文件中即可使用它。这只是显示 (a) 收到的内容和 (b) 让您在编辑器中打开文件的一种方式。您可以(并且可能应该)将fs.writeFile 替换为用户查找/保存/更新数据库调用。如果需要,这里还有 several helpful 问题可以帮助您入门。祝你好运!
    猜你喜欢
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    相关资源
    最近更新 更多