将Instagram帐户连接到本地帐户nodejs&角

时间:2018-01-21 06:26:08

标签: angularjs node.js express oauth-2.0 instagram

我正在尝试创建一个拥有本地用户的MEAN应用程序,但他们也可以将Instagram连接到它(不使用Instagram登录,而只是授权应用程序获取图像)。

目前我正在使用passport和jwt令牌来验证本地用户。我有一个按钮,将他们带到instagram身份验证页面,然后该应用程序将成功授权instagram,然后发送到服务器端的instagram redirect_uri,但是此GET请求没有关于哪个本地用户正在验证instagram的信息,那么如何将该Instagram访问令牌分配给请求链接该帐户的本地用户呢?

感谢任何建议。

谢谢。

编辑: 我正在使用npm instagram-node(https://www.npmjs.com/package/instagram-node)来协助api调用,

这是我的Instagram组件打字稿功能,在点击“连接instagram”按钮时运行

this.http.get('http://192.168.0.20:8080/auth/social/ig').subscribe(data => {
         window.location.href = data.url
     })

这就是我app.js中的内容

//instagram
exports.authorize_user = function(req, res) {
res.redirect(api.get_authorization_url(redirect_uri, { scope: ['likes'], state: 'a state' }));
};

exports.handleauth = function(req, res) {
console.log('req user in handlauth');
console.log(req.user)
api.authorize_user(req.query.code, redirect_uri, function(err, result) {
    if (err) {
        console.log(err.body);
        res.send("Didn't work");
    } else {
        console.log('Yay! Access token is ' + result.access_token);
        res.send('You made it!!');
    }
});
};

^理想情况下,我希望结果中的令牌存储在当前用户中,但req.user当然为null,因为此请求与jwt令牌无关:/

//authorize isnta link
app.get('/auth/social/ig', exports.authorize_user);

// This is your redirect URI
app.get('/oauth/done', exports.handleauth);

1 个答案:

答案 0 :(得分:0)

如果有人想知道,我最终做的是在授权路径中 app.get('/ auth / social / ig /:localuser',exports.authorize_user);

使用通配符作为用户名,然后将用户名置于状态,然后在回调时,只需解析状态以获取本地用户的用户名。