2017-02-20 9 views
0

Я пытаюсь реализовать простой логин с функциональностью SDK на facebook на веб-сайте, который использует VueJS2.0.Публикация данных из facebook SDK в VueJS

Код, который у меня есть в компоненте, который обрабатывает это в основном взяты из FB SDK Quickstart:

onLoginPress() { 
 
      FB.getLoginStatus(function(response) { 
 
       if (response.status === 'connected') { 
 
        console.log('Logged in.'); 
 
       } else { 
 
        FB.login(function(response) { 
 
         if (response.authResponse) { 
 
          console.log('Welcome! Fetching your information.... '); 
 
          FB.api('/me', function(response) { 
 
           console.log('Good to see you, ' + response.name + '.'); 
 
          }); 
 
         } else { 
 
          console.log('User cancelled login or did not fully authorize.'); 
 
         } 
 
        }); 
 
       } 
 
      });

Теперь мне интересно - как я должен предоставить ответ от FB апи назад к VueJS? Я вижу, что внутри этих точек вызова функций в окне, но у меня нет доступа к Vue.

Вью инициализируется со следующим кодом:

/* eslint-disable no-new */ 
 
new Vue({ 
 
    el: '#app', 
 
    render: h => h(App) 
 
})

+0

у вас нет доступа к Vue? Тогда вы работаете в темноте. –

ответ

2

Это окно существует, так как функция, которая выполняет FB выполняется в глобальном контексте.

Чтобы решить эту проблему, в строке перед первым FB присвойте ей переменную, которая будет вашей ссылкой на экземпляр Vue.

let vm = this: 
FB...... 

Затем вы можете сделать нормальные депеши и такие из Vue через vm.someMethod()

+0

Работает как сон, спасибо! –

+0

Спасибо большое! –