2012-05-02 26 views
10

aşağıdaki FB.Login fonksiyonu masaüstü Chrome, FF ve Safari'de çalışıyor. Ancak mobil Safari'de (iPhone 4S'de test edildi), kilitleniyor ve FB.login geri aramasına geri dönülmez. Safari'yi kullandığımda ve Kullanıcı Aracını "Safari iOS 4.3.3 - iPhone" olarak ayarladığımda bunu konsolda da görebilirim.Facebook'tan FB.login Safari'de çalışıyorsa, ancak mobil Safari

Mobil Safari, pop-up'ları engellediğinden mi? (FB.login bir popup iletişim kutusunu tetikler).

Bunu nasıl düzeltirim? Teşekkürler.

function Login(returnLink) { 
     FB.login(function(response) { 
        if(response.status === 'connected') { 
         console.log('User is now FB logged in.'); 
         // now log them into my site 
         encodedReturnLink = encodeURIComponent(returnLink); 
         window.location = location.protocol + '//' + location.host + "/login?returnUrl=" + encodedReturnLink; 
        } 
        else { 
         console.log('User did not fully authorize after clicking FB login button.'); 
        } 
       }, 
       {scope : 'email, publish_actions, publish_stream'} 
     ); 
} 
+0

Bunu kullanıcı etkileşimlerinden hemen sonra (tıklat/vur/gönder) veya bazı gecikmeli kodlardan mı arıyorsun? –

+1

Aynı sorunla karşılaşıyor. Buna bir çözüm buldunuz mu? – Jaffer

cevap

0

Kesinlikle pop-up engelleme meselesi değil. Girişin doğrudan çağrıldığında çalıştığı ancak ajax geri aramasının sonucunun ne zaman yapıldığını gösteren bir senaryo gördüm.

+0

iyi, ama bu gerçekten, doğrudan çağrıldığında değil, geri arama olarak adlandırıldığında açıkça engellendiğinden, pop-up'ları engelleme meselesidir? Doğru çözüm için – gapvision

0

Facebook uygulaması ayarlarınızda Mobil Site URL'sini iki kez kontrol edin.

6

window.fbAsyncInit içinde sayfa yüklendiğinde otomatik olarak FB.Login çalıştırmaya çalışıyordum ve iOS'ta Safari'de çalışmıyordu. Safari, FB.Login çağrısı tarafından tetiklenen açılır pencereyi engelliyordu. Masaüstünde Safari ve Chrome iyi çalıştı (pop-up izin).

İşe-around için bu kullanıcı etkileşimine yanıt olarak FB.Login çağrıyı tetiklemek için olan tek yol buldu (örn. Dokunun veya tıklayın). Bu benim için çalıştı: Safari (iOS 8.0) üzerinde test

HTML

<a href="#" id="fbLogin">Login with Facebook</a> 

JavaScript (jQuery)

$('#fbLogin').click(function(){ 
    FB.login(function(response){ 
     // Do something... 
    }); 
}); 

.

+0

+1. Baş ağrımı kaldırdı. Çok teşekkürler. – neeraj

+1

Safari, pop-up'ları engellemeye oldukça hassas görünüyor. Eğer herhangi bir gecikme yaparsanız (diğer geri aramalar için küçük bir miktar bekleyerek bile) bu, bloğu tetikliyor gibi görünüyor. – justrhysism

+0

@wireblue, geçerli sürümlerdeki girişleri tetiklemenin tek yolu bu mu? – gapvision

İlgili konular