Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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 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

我可以假设这是因为我没有API密钥吗?这是直接从书中提供的示例代码。如果我需要密钥,我将如何实现它?

来自Spotify

2017年5月29日/搜索/曲目/专辑/艺术家和/用户(以及 相关)终结点将开始需要访问令牌


要获得令牌,请在spotify开发网站上注册并创建一个应用程序。希望这能有所帮助。

正如@brijmcq所述,spotify已经为几乎所有api启用了访问令牌,下面是一个获取临时有效访问令牌的简单教程

注意:这仅用于学习Angular时在ngbook中运行示例,要在生产环境中获取access_令牌,请参阅Spotify官方授权指南:

  • 在浏览器中打开,注册新的Spotify帐户或使用现有帐户登录

  • 登录后,单击位于的“创建客户端ID”按钮

  • 单击您刚刚创建的应用程序

  • 3.5您可以在左上角找到自己的客户ID,这将在下一步中需要

  • 单击编辑设置按钮(注销按钮左侧)

  • 用一些有效的url(如“”)填充重定向URI,然后单击“添加”

  • 别忘了存钱

  • 在浏览器中打开“”

  • 第3.5节提到了客户ID

    重定向\u uri应与之前保存的重定向uri匹配

  • 使用任何Spotify帐户登录,单击“同意”按钮,浏览器将重定向您以前保存的url,使用access_令牌和令牌过期时间,如“”
  • 这里的访问令牌是您想要的

  • 您现在可以访问SpotifyAPI,如“curl”

  • 在ngbook音乐搜索示例中修改您的SpotifyService,在每个Spotify查询中添加“access_token”参数

  • 如果在访问令牌过期后需要401,则需要再次重复步骤8以获取新的访问令牌,在生产环境中不建议使用本教程


  • (您可以复制步骤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 }
    ];