2016-08-15 14 views
5

Kullanıcıya facebook'tan bir giriş butonu veya kullanıcı adı gösteren bir bileşen var. , giriş yapmış olup olmamasına göre değişir. Ben immidiatly giriş kontrol edeceğiz böylece Vuejs bileşeni facebook sdk ürününün yüklenmesini bekler

Şimdi bu bileşende ben

created 

olayı kullanın. Bir kısaca yaratılan içinde kod:

FB.getLoginStatus(function(response) { 
    //more things..... 

hata o FB, tanımlı olmadığını söylüyor ve emin o FB henüz yüklü değil, doğru. Bu

<body> 
<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
    appId  : '1111111111', 
    xfbml  : true, 
    version : 'v2.7' 
    }); 
}; 

(function(d, s, id){ 
var js, fjs = d.getElementsByTagName(s)[0]; 
if (d.getElementById(id)) {return;} 
js = d.createElement(s); js.id = id; 
js.src = "//connect.facebook.net/en_US/sdk.js"; 
fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk')); 
</script> 
+0

Taşı kodu oluşturun. Aksi takdirde, uygulamanızı fb'nin hazır olduğunu bildirmek için bazı etkinlikler kullanın. – vbranden

cevap

7

gibi

ben yük facebook Bunun için bir yanıt için sonsuza arıyordu.

vbranden'ın yorumu için Thanx çalışmamı benim için çalıştı.

Yapmanız gereken, oluşturulan yöntemde facebook SDK'yı başlatmanızdır. Ardından, girişi fbAsyncInit işlevinin içinden çağırın.

İşte benim için çalıştı budur:

<body> 
<div id="test"></div> 

<script> 
new Vue({ 
    el: '#test', 
    created: function() { 
    console.log('created main'); 
    window.fbAsyncInit = function() { 
     FB.init({ 
     appId  : '1111111111', 
     xfbml  : true, 
     version : 'v2.7' 
     }); 

     //This function should be here, inside window.fbAsyncInit 
     FB.getLoginStatus(function(response) { 
     console.log(response); 
    }); 

    }; 

    (function(d, s, id){ 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_US/sdk.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 
    } 
}); 

</script> 
</body> 
2

Bu sorun bir bir vuejs eklentisi oluşturarak çözmek olmak.

Lütfen nuxt.js. adresindeki related answer denetleyin.

bir eklenti vuejs uygulamasına plugins/fb-sdk.js

const vue_fb = {} 
vue_fb.install = function install(Vue, options) { 
    (function(d, s, id){ 
     var js, fjs = d.getElementsByTagName(s)[0] 
     if (d.getElementById(id)) {return} 
     js = d.createElement(s) 
     js.id = id 
     js.src = "//connect.facebook.net/en_US/sdk.js" 
     fjs.parentNode.insertBefore(js, fjs) 
     console.log('setting fb sdk') 
    }(document, 'script', 'facebook-jssdk')) 

    window.fbAsyncInit = function onSDKInit() { 
     FB.init(options) 
     FB.AppEvents.logPageView() 
     Vue.FB = FB 
     window.dispatchEvent(new Event('fb-sdk-ready')) 
    } 
    Vue.FB = undefined 
} 

import Vue from 'vue' 

Vue.use(vue_fb, { 
    appId: 'your-app-id', 
    autoLogAppEvents: true, 
    xfbml: true, 
    version: 'v2.9' 
})