2017-09-11 135 views
2

我在與谷歌網址縮短服務的那一刻的問題。 我已經建立了這個服務:angularjs和谷歌URL縮短

angular.module('widget.core').service('urlShortener', service); 

function service($log, $q, $http) { 

    var gapiKey = '<MyApiKey>'; 
    var gapiUrl = 'https://www.googleapis.com/urlshortener/v1/url'; 

    return { 
     shorten: shorten 
    }; 

    ////////////////////////////////////////////////// 

    function shorten(url) { 
     console.log(url); 
     var data = { 
      method: 'POST', 
      url: gapiUrl + '?key=' + gapiKey, 
      headers: { 
       'Content-Type': 'application/json', 
      }, 
      data: { 
       longUrl: url, 
      } 
     }; 

     return $http(data).then(function (response) { 
      $log.debug(response); 
      return response.data; 
     }, function (response) { 
      $log.debug(response); 
      return response.data; 
     }); 
    }; 
}; 

據我所知,這應該工作。我已經把正確的API密鑰,當我運行這個方法我得到這個錯誤:

{ 
    error: { 
     code: 401, 
     message: 'Invalid credentials' 
    } 
} 

但是,如果我用郵遞員,設置它正是這樣的方法:

當我發佈此,它的工作原理沒有問題。 我已經檢查了我的應用程序在谷歌控制檯上,它絕對設置爲無限制。

有沒有人碰到這個問題之前?有誰知道如何解決它?

回答

0

我想通了這一點,這是無關上面的代碼,但我想我會回答我的問題,因爲別人可能會遇到同樣的問題。

在項目中,我有一個httpInterceptor設置,它將驗證令牌添加到每個與我的API交談的請求。這是造成這個問題的原因。 事有湊巧,我已經定義了我的apiUrl恆定的,所以我剛剛更新了攔截進行檢查,以確保請求的URL是試圖追加令牌之前我的API。 想要這樣:

angular.module('widget.core').factory('authInterceptor', factory); 

function factory($q, $location, $localStorage, apiUrl) { 

    // The request function 
    var request = function (config) { 

     // If we are querying our API 
     if (config.url.indexOf(apiUrl) > -1) { 

      // Get our stored auth data 
      var authData = angular.fromJson($localStorage.get('authorizationData')); 

      // Set our headers to the request headers or a new object 
      config.headers = config.headers || {}; 

      // If we have any auth data 
      if (authData && authData.authenticated) { 

       // Set our authorization header 
       config.headers.Authorization = 'Bearer ' + authData.token; 
      } 
     } 

     // Return our config 
     return config; 
    }; 

    return { 
     request: request 
    }; 
}; 

我希望能幫助別人。花了我幾個小時才弄明白:/