Soundcloud登录NodeJS和喜欢发出声音 - 401未经授权

时间:2016-01-20 02:12:10

标签: javascript node.js authentication oauth soundcloud

过去一天我一直在研究这个问题,似乎无法弄明白。我正在使用此Passport-Soundcloud来实现soundcloud身份验证。然而,我不明白的是我如何获得,并将身份验证令牌传递给前端按钮推送到声音。

我的前端代码如下:

function allowLike(){
  $('.queueTrack').off('click').on('click', function(user){
    console.log('clicked');
      SC.put('/me/favorites/' + 21928809);
    consol.log('sound liked')

  });
};

每当我尝试使用/ login路由登录我的应用程序时,它会按预期工作并将我重定向到我的主页。问题是我不知道如何从passport-soundcloud获取oauth令牌,因此我可以将其实现到前端点击事件中。

我的路线遵循护照 - 声音云指示,似乎有效,但我无法弄清楚如何获得oauth令牌......

有什么想法吗?我完全迷失了。

1 个答案:

答案 0 :(得分:1)

所以,我不熟悉soundcloud api的具体细节。但如果它遵循流行的oauth apis的基本模式。然后你会想做这样的事情。

  1. 用户在没有Cookie的情况下到达您的网站
  2. 他们使用oauth
  3. 授权您的应用
  4. 当用户重定向回您的应用时,SoundCloud会为您提供该用户的访问密钥。将此值存储在数据库或缓存中或内存中。但最重要的是,您必须在该用户浏览器上创建cookie。因此,当他们返回时,您可以再次查找访问密钥。
  5. 当用户点击时,在后端查找accesskey并使用该令牌点击SoundCloud api。
  6. 在最初的oauth流程中......

    function(accessToken, refreshToken, profile, done) {
        User.findOrCreate({
            soundcloudId: profile.id,
            token: accessToken // <--- store the token!
        }, function (err, user) {
            return done(err, user);
        });
    }
    

    然后当他们点击

    app.put('/me/favorites/12345' function(req, res) {
        var id = req.user.id; // <--- passport and connect session saved the user id for you
        // lookup the token in your database
        // use the token to hit the soundcloud api
    })
    

    我希望这有点道理。这是完全未经测试的伪代码。