2015-04-17 4 views
0

Я пытаюсь использовать Facebook Share в AngularJS. Ниже приведена моя функция, которая вызывается, когда пользователь нажимает на значок FB.AngularJS - Facebook Sharer

$scope.shareFB = function(){ 

     // Get configuration ID from service 
     configuratorService.storeConfiguration($scope.modelCode, function(configID){ 
      // Use saved configuration id to create share link 
      var base = $location.absUrl().replace($location.url(), ''); 
      var byoUrl = base + "/" + $scope.modelCode + "/resume/" + configID; 
      console.log(byoUrl); 
      var fbpopup = window.open("https://www.facebook.com/sharer/sharer.php?u=" + byoUrl, "pop", "width=600, height=400, scrollbars=no"); 
     }); 

    } 

Эта функция отлично работает, когда я пытаюсь поделиться URL, как «https://www.google.com/»

Фейсбук Popup затем имеет URL = «https://www.facebook.com/sharer/sharer.php?u=https://www.google.com/»

Когда я использую функцию выше:

byoUrl = "http://localhost:8000/#/15K6/resume/9295316837"

и полученный в FB всплывающее окно имеет URL = "https://www.facebook.com/15K6/resume/9295316837"

Почему «/sharer/sharer.php?= http://localhost:8000/#/» отрезаны?

+0

Исследование ключевых слов: кодирование URL. – CBroe

ответ

0

Вы даже не должны пытаться использовать локальный URL-адрес, так как Facebook никогда не сможет его очистить. Это очень вероятно, почему ваш URL-адрес отключен. Facebook пытается разрешить его и очистить, но он никогда не найдет его, поэтому он прилагает все усилия для перенаправления внутри себя. Пример:

https://www.facebook.com/sharer/sharer.php?u=http://localhost:8000/#/coke

0

Попытка поставить вашу долю логики в контроллере. Что-то в этом роде.

// Share posts 
 
    $scope.fbShare = function(post){ 
 
    FB.ui(
 
    { 
 
     method: 'feed', 
 
     name: post.title, 
 
     link: 'http://www.cengkuru.com/'+post.slug, 
 
     picture: '', 
 
     caption: '', 
 
     description: $filter('limitTo')($scope.post.body, 150), 
 
     message: '' 
 
    }); 
 
    }
<div id="fb-root"></div> 
 
<script> 
 
    window.fbAsyncInit = function() { 
 
     FB.init({appId: 'YOUR_APP_ID', status: true, cookie: true, 
 
     xfbml: true}); 
 
    }; 
 
    (function() { 
 
     var e = document.createElement('script'); e.async = true; 
 
     e.src = document.location.protocol + 
 
     '//connect.facebook.net/en_US/all.js'; 
 
     document.getElementById('fb-root').appendChild(e); 
 
    }()); 
 
    </script>