2016-04-06 29 views
0

Bütün gün bir İyonik hizmette Spotify verilerinin ele geçirilmesiyle uğraşıyordum ve şimdi daha önce çalışmakta olan bir şey aniden yapmıyor.İyonik hizmette açısal-spotify yönteminin çalıştırılmaması

Giriş komutumun bir hizmette ayarlanmış hali var ve hepsi iyi çalışıyor. Ancak,'un içinde bulunan console.log('updateInfo() called'); yönteminden sonra, program, işlevin geri kalanını atlayarak Spotify'dan veri toplanmasını engeller.

Tüm bu hizmet şimdiye kadar geçerli:

.factory('SpotifyService', function ($cordovaOauth, Spotify) { 

    var currentUser = {}, 
     userId = ''; 

    function login() { 
     console.log('login() called'); 
     $cordovaOauth.spotify('583ac6ce144e4fcb9ae9c29bf9cad5ef', ['user-read-private', 'playlist-read-private']).then(function (result) { 
      window.localStorage.setItem('spotify-token', result.access_token); 
      Spotify.setAuthToken(result.access_token); 
     }, function (error) { 
      console.log("Error ->" + error); 
     }); 
    } 

    function updateInfo() { 
     console.log('updateInfo() called'); 
     Spotify.getCurrentUser().then(function (data) { 
      console.log('Gathering data'); 

      currentUser = data; 
      userId = data.id; 

      console.log("CURRENT USER: " + userId + " - (" + currentUser + ")"); 
      console.log('Done updating'); 
     }); 
    } 

    return { 
     getUser: function() { 
      console.log('SpotifyService.getUser() called'); 
      var storedToken = window.localStorage.getItem('spotify-token'); 
      if (storedToken !== null) { 
       console.log('Token accepted'); 
       currentUser = updateInfo(); 
       console.log('getUser function returns: ' + userId + " - (" + currentUser + ")"); 
       //currentUser = Spotify.getCurrentUser(); 
      } else { 
       console.log('getUser else accessed'); 
       login(); 
      } 
      return currentUser; 
     } 
    }; 
}) 

Herhangi bir fikir Spotify.getCurrentUser() yöntem yayınlanmaz neden olarak?

+0

yanı .catch bloğuna auth işlev çağrısında hata geri arama deseni değişiyor öneriyoruz 30 saniyeden uzun bir süredir iz sürün? – user636525

+0

O zaman, tam iz oynatmaya izin vermeyen Spotify Web API'sini kullanıyordum. Geliştirici web sitesinde, üzerinde çalışılacak bir web uygulaması yerine yerel uygulama kodu gerektiren kimliği doğrulanmış kullanıcılar için tam bir Spotify oynatıcı kurmanıza yardımcı olabilecek yöntemler vardır. –

cevap

3

Sorununuz vaatlerle dolu gibi görünüyor. Spotify.getCurrentUser() bir söz verirse, bir catch bildirimini tanımlamadığınız için hatanın ne olduğunu bilmezsiniz. Sözlerin basit ve açık bir açıklaması için Promises in Angular Explained as a Cartoon'u okumalısınız.

bir catch ifade eklemek için kodunuzu revize:

Spotify.getCurrentUser() 
.then(function (data) { 
    ... 
}) 
.catch(function(error){ 
    console.log(error); 
}); 
+0

Yararlı, teşekkür ederim. Günlerce doğru şekilde doğrulandıktan sonra çıkıyor, bir yerden yanlış erişim belirteci alıyorum:/ –

+0

:) Yardımcı olabildiğime sevindim. Sözleri kullanmaya başladığımda aynı konuya rastladım. – inspired

0

Eğer .catch bloğu tanımlamak zorunda $ cordovaOauth.spotify() veya Spotify.getCurrentUser() gibi sözler her kullandığınızda, o size yardımcı olacaktır ayıklama.

Hatanızı izini getCurrentUser() işlev çağrısına .catch bloğunu ekleyin ve oynamak başardık ben de

.catch(function(error){ 
    console.log(error); 
});