簡體   English   中英

Express.js + Facebook

[英]Express.js + Facebook

我在嘗試使此Express應用正常工作時遇到了問題。 我想在Facebook getLoginStatus函數內部的if分支中調用(response.status ==='connected')中的函數。 這是代碼:

    (function(){
      var app = angular.module('AppProva', ['ngResource']);
      app.controller('friendFetcherCtrl', ['$window', function($window){
        this.getFriends = function(){
          console.log('GETFRIENDS()');
        };
        this.login = function() {
          console.log('LOGIN()');
          $window.fbAsyncInit = function() {
            FB.init({ 
              appId: '****************',
              xfbml: true,
              version : 'v2.3'
            });
            FB.getLoginStatus(function(response) {
              if (response.status === 'connected') {
                console.log('Logged in.');
                this.getFriends();
                /*Facebook graph query*/
              }
              else {
                FB.login(function() { /* Do something */ }, { scope : 'user_friends, public_profile' });
              }
            });
          };
          (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'));
        };
      }]);
    })();

登錄函數由div中的ng-init指令調用。 加載我的HTML頁面時,出現錯誤“ TypeError:this.getFriends不是函數”。 也許問題是我在$ window中定義的函數內調用了this.getFriends()。 我怎樣才能使事情正常?

預先感謝弗朗切斯科

編輯:我想我知道問題是“ this”關鍵字,但是如果沒有它,我如何使它工作呢?

很簡單 FB.getLoginStatus內部, this指向其他內容。 解決方法:

(function(){
      var app = angular.module('AppProva', ['ngResource']);
      app.controller('friendFetcherCtrl', ['$window', function($window){
        this.getFriends = function(){
          console.log('GETFRIENDS()');
        };
        var self = this;
        this.login = function() {
          console.log('LOGIN()');
          $window.fbAsyncInit = function() {
            FB.init({ 
              appId: '****************',
              xfbml: true,
              version : 'v2.3'
            });
            FB.getLoginStatus(function(response) {
              if (response.status === 'connected') {
                console.log('Logged in.');
                self.getFriends(); //self will point to this in app.controller's function
                /*Facebook graph query*/
              }
              else {
                FB.login(function() { /* Do something */ }, { scope : 'user_friends, public_profile' });
              }
            });
          };
          (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'));
        };
      }]);
    })();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM