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

Soundcloud Login with NodeJS and Liking Sounds Issue - 401 Unauthorized

本文关键字:授权 问题 声音 NodeJS 使用 登录 喜欢 Soundcloud      更新时间:2023-09-26

我过去一天一直在研究这个问题,似乎无法弄清楚。 我正在使用这个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 路由通过我的应用程序登录时,它都会按预期工作并将我重定向到我的主页。 问题是我不知道如何从护照声音云中获取 oauth 令牌,以便我可以将其实现到前端点击事件中。

我的路线遵循了护照-声云说明,似乎有效,但我不知道如何获得 oauth 令牌......

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

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

  1. 用户在没有 cookie 的情况下到达您的网站
  2. 他们使用 OAuth 授权你的应用
  3. 当用户被重定向回您的应用程序时,SoundCloud 将为您提供此用户的访问密钥。 将此值存储在数据库、缓存或内存中。 但最重要的是,您必须在该用户的浏览器上创建一个cookie。这样当它们返回时,您可以再次查找访问密钥。
  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
})

我希望这有某种意义。 这是完全未经测试的伪代码。