使用节点

所以我对使用OAuth并不熟悉,而且我试图完成这项工作的确很失败。 我查阅了Spotify授权代码的文档,并找到了我使用的节点的包装。

我希望能够通过Spotify登录用户,并从那里对Spotify API执行API调用。

通过一个示例来看,我最终得到了用户被授予访问权限后触发的/callback路由代码,Spotify帐户服务将您重定向到此处:

app.get('/callback', (req, res) => {
  const { code, state } = req.query;
  const storedState = req.cookies ? req.cookies[STATE_KEY] : null;

  if (state === null || state !== storedState) {
    res.redirect('/#/error/state mismatch');

  } else {
    res.clearCookie(STATE_KEY);

    spotifyApi.authorizationCodeGrant(code).then(data => {
      const { expires_in, access_token, refresh_token } = data.body;

      // Set the access token on the API object to use it in later calls
      spotifyApi.setAccessToken(access_token);
      spotifyApi.setRefreshToken(refresh_token);

      // use the access token to access the Spotify Web API
      spotifyApi.getMe().then(({ body }) => {
        console.log(body);
      });


      res.redirect(`/#/user/${access_token}/${refresh_token}`);
    }).catch(err => {
      res.redirect('/#/error/invalid token');
    });
  }
});

因此,在请求结束时,令牌传递给浏览器,以便从那里发出请求: res.redirect('/#/user/${access_token}/${refresh_token}');

如果被重定向到那里,我想将用户重定向到他可以搜索艺术家的表单。 我是否需要以某种方式随时在参数周围传递令牌? 我将如何重定向用户? 我试图简单地渲染一个新页面并在那里传递params,但它不起作用。


您可以将令牌存储在各种地方,包括查询参数或cookie - 但我建议使用localstorage。 当您的前端加载/#/user/${access_token}/${refresh_token}路由时,您可以获取这些值并将它们存储在本地存储中(例如localstorage.set('accessToken', accessToken) ),稍后检索它们需要调用API。

链接地址: http://www.djcxy.com/p/55679.html

上一篇: Using node

下一篇: Spotify API automated initial authorization