Spotify API:不能具有隐式授予流的访问令牌

时间:2018-12-07 15:27:34

标签: javascript angularjs api spotify access-token

我正在使用隐式授予流来将Spotify API与AngularJS结合使用,但是我无法使用access_token。

我以这种方式实现了隐式授予流:

const hash = window.location.hash
.substring(1)
.split('&')
.reduce(function (initial, item) {
  if (item) {
    var parts = item.split('=');
    initial[parts[0]] = decodeURIComponent(parts[1]);
  }
  return initial;
}, {});
window.location.hash = '';

// Set token
let _token = hash.access_token;

const authEndpoint = 'https://accounts.spotify.com/authorize';

// Replace with your app's client ID, redirect URI and desired scopes
const clientId = 'bcb7a7...13727c';
const redirectUri = 'http://localhost/~mathieu/';
const scopes = [
  'user-read-birthdate',
  'user-read-email',
  'user-read-private'
];

// If there is no token, redirect to Spotify authorization
if (!_token) {
  window.location = `${authEndpoint}?client_id=${clientId}&redirect_uri=${redirectUri}&scope=${scopes.join('%20')}&response_type=token`;
}

当我进入url时,我可以很好地重定向到Spotify身份验证,但是当我连接时,浏览器进入重定向循环:spotify将我重定向到localhost /〜mathieu,它将我重定向到spotify等。

我想在Spotify重定向我之后,我的脚本无法获得令牌,因此我又被重定向了,但是我找不到解决方案。

请帮我

1 个答案:

答案 0 :(得分:0)

如果您使用的路由器是有角度的,则很可能是在此代码可以从中获取值之前,路由器会剥离URL的哈希值。您需要确保此代码在您的角度路由器代码运行之前运行。另外,您也可以插入有角路由器并在其中检索哈希值。 This question似乎暗示可能。