如何将instagram api中的数据添加到现有用户记录?

时间:2019-02-19 04:38:42

标签: node.js mongodb mongoose

如何将instagram API返回的数据与现有用户帐户相关联-以便将instagram个人资料信息存储在与发出请求的用户相同的文档中?

我正在使用node.js,带有MongoDB的Mongoose和来自npm的node-instagram从instagram获取基本用户信息。此站点上的用户将创建一个帐户,然后单击一个按钮将其帐户连接到instagram。我可以提取instagram数据并将其存储在数据库中,但是我不确定如何将该数据与发出请求的本地(已经存在)帐户关联?

    app.get('/auth/instagram/feed', async (req, res) => {
     try {
     const data = await instagram.authorizeUser(req.query.code, 
    redirectUri);


    const newUserInfo = new User({
      username: data.user.username,
      full_name: data.user.full_name,
      access_token: data.access_token,
    });

    newUserInfo.save();
    res.redirect("/");
   } catch (err) {
     res.json(err);
   }
    });

这成功地将一些基本的instagram信息存储在数据库中。除了保存新记录之外,我该如何使用电子邮件和密码信息将此数据添加到现有用户的记录中?

1 个答案:

答案 0 :(得分:0)

我能够通过在获取用户ID的await行之前创建一个变量来使其工作。

我在下面添加了完整的代码,而忽略了将所有内容都包含在原始帖子中。请注意,“ / auth / instagram / feed”路由是由instagram调用的(如果您对该名称的来源感到困惑)。注册新的API应用时,您必须将此输入他们的URI重定向中。

const instagram = new instagramConnect({
  clientId: process.env.INSTAGRAM_CLIENT_ID,
  clientSecret: process.env.INSTAGRAM_CLIENT_SECRET
});

const redirectUri = 'http://localhost:3000/auth/instagram/feed';


app.get("/instagram-connect", function(req, res){
  res.render("instagramConnect");
});

app.get('/auth/instagram', (req, res) => {
  res.redirect(instagram.getAuthorizationUrl(redirectUri, { scope: ['basic'] }));
});


app.get('/auth/instagram/feed', async (req, res) => {
  try {
    const userID = req.user._id;
    const data = await instagram.authorizeUser(req.query.code, redirectUri);
    User.findOneAndUpdate({_id: userID}, {access_token: data.access_token}, function(err){
      if(!err){
        res.redirect("/ig-success");
      }
    });
  } catch (err) {
    res.json(err);
     }
  });