使用POST请求获取授权令牌,然后在GET请求中使用POST响应

时间:2018-12-05 20:37:29

标签: javascript angularjs api post get

使用POST方法请求了Spotify访问代码。为响应分配一个变量。然后,尝试直接使用GET方法访问令牌。

   {
        angular.module('app')
            .controller('GameController', function($http){
                const $ctrl = this;

                $http.post('/access-token').then(function(response){
                    $ctrl.tokenResponse = response.data;
                    $ctrl.myToken = $ctrl.tokenResponse.access_token;
                    console.log(response);

                });

                   $http({
                    url: 'https://api.spotify.com/v1/tracks?ids=6rqhFgbbKwnb9MLmUQDhG6',
                    method: 'GET',
                    data: {
                        'Authorization': `Bearer ${$ctrl.myToken}`
                    }
                }).then(function(response){
                    console.log(response.data);
                    $ctrl.tracks = response.data;
                    console.log($ctrl.tracks);
                })

        });
    };

看起来GET方法无法识别我的POST方法中的变量。我的$ {$ ctrl.myToken}未定义。 “ data”:{“ Authorization”:“ bearer undefined”}。但是,当我在GET方法之前console.log记录POST结果时,它会记录访问代码。

不确定如何获取GET方法以读取POST方法的响应。

所有这些代码都在我的控制器中。

enter image description here

1 个答案:

答案 0 :(得分:0)

好的。像大家建议的那样尝试过这种方式。现在正在获取我的访问令牌,但没有数据。看来我现在有一个全新的问题,但至少第一个问题已解决。感谢大家! :)

{
angular.module('app')
    .controller('GameController', function($http){
        const $ctrl = this;

        $http.post('/access-token').then(function(response){
            $ctrl.tokenResponse = response.data;
            $ctrl.myToken = $ctrl.tokenResponse.access_token;

            $http({
                method: 'GET',
                url: 'https://api.spotify.com/v1/tracks?ids=6rqhFgbbKwnb9MLmUQDhG6',
                data: {
                    Authorization: `Bearer ${$ctrl.myToken}`
                }
            }).then(function(response){
                console.log(response.data);
                $ctrl.tracks = response.data;
                console.log($ctrl.tracks);
            })

        });



});

};