【发布时间】:2018-02-01 19:15:35
【问题描述】:
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/Rx';
/**
* SpotifyService works querying the Spotify Web API
* https://developer.spotify.com/web-api/
*/
@Injectable()
export class SpotifyService {
static BASE_URL = 'https://api.spotify.com/v1';
constructor(private http: Http) {
}
query(URL: string, params?: Array<string>): Observable<any[]> {
let queryURL = `${SpotifyService.BASE_URL}${URL}`;
if (params) {
queryURL = `${queryURL}?${params.join('&')}`;
}
return this.http.request(queryURL).map((res: any) => res.json());
}
search(query: string, type: string): Observable<any[]> {
return this.query(`/search`, [
`q=${query}`,
`type=${type}`
]);
}
searchTrack(query: string): Observable<any[]> {
return this.search(query, 'track');
}
getTrack(id: string): Observable<any[]> {
return this.query(`/tracks/${id}`);
}
getArtist(id: string): Observable<any[]> {
return this.query(`/artists/${id}`);
}
getAlbum(id: string): Observable<any[]> {
return this.query(`/albums/${id}`);
}
}
export const SPOTIFY_PROVIDERS: Array<any> = [
{ provide: SpotifyService, useClass: SpotifyService }
];
那是我的 spotify.service.ts 文件。控制台给了我这个错误:
加载资源失败:服务器响应状态为 401(未授权) core.es5.js:1084 错误响应标头:标头 {_headers: Map(1), _normalizedNames: Map(1)}ok: falsestatus: 401statusText: "Unauthorized"type: 2url: "https://api.spotify.com/v1/search?q=eminem&type=track"_body: "{↵"错误”:{↵“状态”:401,↵“消息”:“未提供令牌”↵ }↵}“proto:Bodyconstructor:ƒ Response(responseOptions)toString:ƒ ()原型:对象 defaultErrorLogger@core.es5.js:1084
我可以假设这是因为我没有 API 密钥吗?这是直接从书中提供的示例代码。如果我需要一个密钥,我将如何实现它?
【问题讨论】:
-
我看到,截至 2017 年 5 月 29 日,他们对每个请求都需要一个 api 密钥。这本书是 2017 年出版的,所以它是一个非常近期的变化。我是否只需在 BASE_URL 末尾添加我的密钥?
标签: javascript angular