7

Bir kullanıcının Facebook hesabından fotoğraf çekmesine izin vermek için Grafik API'nın FB javascript sürücüsünü kullanıyorum. onlar ile giriş istenir bağlamak ilk kez:Neden Grafik API geri dönüş soru işareti ilk girişte albümlerim ve sonraki girişlerde düzgün görüntüler için kapak fotoğraflarını kaplıyor?

FB.login(function(res) { 
    if (res.status == 'connected') { 
     auth = res.authResponse; // cache auth response 
     getAlbums(); 
    } 
}); 

Başarılı olursa, ben iade yetkilendirme nesne önbelleğe ve derhal kullanıcının albüm getirilemedi: Ben yineleme döndürülen nesne kullanma

function getAlbums() { 
    FB.api('/me/albums', function(res) { 
     albums = res.data; 
    }); 
} 

ile onların cover_photo üzerinde albüm ve görüntüler:

https://graph.facebook.com/{{album.cover_photo}}/picture?type=normal&access_token={{auth.accessToken}} 

ilk defa, tüm kapak fotoğrafları bir kullanıcı oturum soru işareti simgeleridir. Ancak, kullanıcı sayfayı yenilediğinde veya sayfaya geri dönerse, uygulama yeniden doğrular, kullanıcının önceden giriş yaptığını algılar ve uygun cover_photo küçük resimlerini görüntüler.

Yeni kimliği doğrulanmış kullanıcıların kapak fotoğraflarını görebilmelerini nasıl sağlayabilirim?

+0

Albümünüzde görüntü yokken kapak resmi soru işaretidir. Sanırım bir nedenden dolayı, ilk defa kimlik doğrulaması için nesneniz düzgün yüklenmiyor. Kodunuzda geri aramaları düzgün kullanıyor musunuz? –

+0

Bu sorunu boş bir erişim belirteci ile yeniden yapıyorum, https://graph.facebook.com/10200952202073231/picture?type=normal&access_token= FB.log adresinden aldığınız param konsolu çalmayı deneyin. – Bnaya

cevap

4

Emin değilim, ancak authResponseChangeevent'a abone olmadığınızı düşünüyorum.

basit aşağıdaki kod parçası sen,
<html> 
<head></head> 
<body> 
<div id="fb-root"></div> 
<script> 
var access_token = ""; 
window.fbAsyncInit = function() 
{ 
    FB.init({ 
     appId  : '<APP-ID>', 
     status  : true, 
     cookie  : true, 
     xfbml  : true 
    }); 

    FB.Event.subscribe('auth.authResponseChange', function(response) 
    { 
     access_token = response.authResponse.accessToken; 
     if (response.status === 'connected') 
     { 
      FetchUserPhotos(); 
     } 
     else if (response.status === 'not_authorized') 
     { 
      FB.login('scope: user_photos'); 
     } 
     else 
     { 
      FB.login('scope: user_photos'); 
     } 
    }); 
}; 

// Load the SDK asynchronously 
(function(d){ 
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
if (d.getElementById(id)) {return;} 
js = d.createElement('script'); js.id = id; js.async = true; 
js.src = "//connect.facebook.net/en_US/all.js"; 
ref.parentNode.insertBefore(js, ref); 
}(document)); 

function FetchUserPhotos() 
{ 
    FB.api('/me/albums', function(response) 
    { 
     var albums = response.data; 
     for(var i=0; i<albums.length; i++) 
     { 
      var album = albums[i]; 
      if(album.cover_photo != undefined) 
      { 
       FB.api("/"+album.cover_photo+"?access_token="+access_token, function(cover_photo) 
       { 
        console.log(cover_photo.source); 
       });  
       //console.log("https://graph.facebook.com/"+album.cover_photo+"/picture?type=normal&access_token="+access_token); 
      } 
     }   
    }); 
} 
</script> 

<fb:login-button scope="user_photos" show-faces="true" width="200" max-rows="1"></fb:login-button> 
</body> 
</html> 

için-

Umarım yardımcı olur iyi şanslar arıyoruz aynı yapar

!

+0

Ancak, auth olayları, sorun albümleri geri almıyor, kullanıcı ilk defa uygulamada oturum açtığında bu albümlerden cover_photos dosyasını alıyor. Döndükten sonra cover_photos normal olarak görünür. – Soviut

+0

Tamam, ancak kapak fotoğrafları da bir seferde getiriliyor, değil mi? Ben kapak fotoğrafları ve iyi çalışıyor –

+0

için kod düzenledim Teşekkürler, ancak, ben görüntüleri geri alıyorum ama soru işareti "varsayılan" görüntü gösteriyorlar, böylece basit bir console.log yeterli olmayabilir Çalıştığını kanıtla. – Soviut

İlgili konular