Javascript ng-book-2 Angular 4 Spotify API示例代码来自提供的手册 从'@angular/core'导入{Injectable}; 从'@angular/Http'导入{Http}; 从“rxjs/Observable”导入{Observable}; 进口“rxjs/Rx”; /** *SpotifyService可以查询Spotify Web API * https://developer.spotify.com/web-api/ */ @可注射() 导出类SpotifyService{ 静态基址https://api.spotify.com/v1'; 构造函数(专用http:http){ } 查询(URL:string,params?:数组):可观察的“\u body:”{↵ “错误”:{↵ “状态”:401,↵ “消息”:“未提供令牌”↵ }↵}“proto:主体构造函数:响应(responseOptions)到字符串()proto:对象 defaultErrorLogger@core.es5.js:1084
我可以假设这是因为我没有API密钥吗?这是直接从书中提供的示例代码。如果我需要密钥,我将如何实现它?来自Spotify 2017年5月29日/搜索/曲目/专辑/艺术家和/用户(以及 相关)终结点将开始需要访问令牌Javascript ng-book-2 Angular 4 Spotify API示例代码来自提供的手册 从'@angular/core'导入{Injectable}; 从'@angular/Http'导入{Http}; 从“rxjs/Observable”导入{Observable}; 进口“rxjs/Rx”; /** *SpotifyService可以查询Spotify Web API * https://developer.spotify.com/web-api/ */ @可注射() 导出类SpotifyService{ 静态基址https://api.spotify.com/v1'; 构造函数(专用http:http){ } 查询(URL:string,params?:数组):可观察的“\u body:”{↵ “错误”:{↵ “状态”:401,↵ “消息”:“未提供令牌”↵ }↵}“proto:主体构造函数:响应(responseOptions)到字符串()proto:对象 defaultErrorLogger@core.es5.js:1084,javascript,angular,Javascript,Angular,我可以假设这是因为我没有API密钥吗?这是直接从书中提供的示例代码。如果我需要密钥,我将如何实现它?来自Spotify 2017年5月29日/搜索/曲目/专辑/艺术家和/用户(以及 相关)终结点将开始需要访问令牌 要获得令牌,请在spotify开发网站上注册并创建一个应用程序。希望这能有所帮助。正如@brijmcq所述,spotify已经为几乎所有api启用了访问令牌,下面是一个获取临时有效访问令牌的简单教程 注意:这仅用于学习Angular时在ngbook中运行示例,要在生产环境中获取acce
要获得令牌,请在spotify开发网站上注册并创建一个应用程序。希望这能有所帮助。正如@brijmcq所述,spotify已经为几乎所有api启用了访问令牌,下面是一个获取临时有效访问令牌的简单教程 注意:这仅用于学习Angular时在ngbook中运行示例,要在生产环境中获取access_令牌,请参阅Spotify官方授权指南:
(您可以复制步骤8中提到的您自己的url,以便重新验证)我看到,截至2017年5月29日,他们要求每个请求都有一个api密钥。这本书于2017年出版,因此这是一个非常新的变化。我是否只在基本URL的末尾添加密钥?我在前面的评论中说过。我如何添加密钥?我是否只在基本URL之后添加密钥?
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 }
];