使用 NodeJS 和喜欢声音问题的 Soundcloud 登录 - 401 未经授权

Soundcloud Login with NodeJS and Liking Sounds Issue - 401 Unauthorized

过去一天我一直在研究这个问题,但似乎无法弄明白。我正在使用这个 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 令牌,所以我可以将它实现到前端点击事件中。

我的路线遵循了 passport-soundcloud 的说明并且似乎有效,但我不知道如何获取 oauth 令牌...

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

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

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

在最初的 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
})

我希望这能说得通。这是完全未经测试的伪代码。