ngFacebook无法使用phonegap

时间:2017-10-25 11:05:57

标签: javascript angularjs cordova phonegap-plugins phonegap

我在当前的角度应用中使用了Almog Baku的ngFacebook。在测试环境中,它工作正常。但是通过phonegap在apk版本中它不起作用。我已经包括了

<dependency id="cordova-plugin-inappbrowser" />

<feature name="InAppBrowser">
<param name="android-package" value="org.apache.cordova.InAppBrowser" />
</feature>
<feature name="InAppBrowser">
<param name="ios-package" value="CDVInAppBrowser" />
</feature>

进入我的config.xml,但仍然没有弹出InAppBrowser或新标签。

我的App.js

var myApp = angular.module('myApp', [
    'ngTouch',
    'ngRoute',
    'myApp.controllers',
    'ngIdle',
    'ngFileUpload',
    'ng.deviceDetector',
    'oitozero.ngSweetAlert',
    'angular-hmac-sha512',
    'ngFacebook'
]);
myApp.config( function( $facebookProvider ) {
    $facebookProvider.setAppId('1869339203095182');
});

在我的控制器中:

$scope.login =  function() {
$facebook.login().then(function() {
  refresh();
});
}
$rootScope.$on('event:social-sign-in-success', function(event, userDetails){
 console.log(userDetails);
})
function refresh() {
  $facebook.api("/me",{fields: 'id,name,email'}).then( 
      function(response) 
      {
            //console.log( response );
      },
      function(err) {
          console.log(err);
        //$scope.welcomeMsg = "Please log in";
      }
  ); 
}
refresh();

2 个答案:

答案 0 :(得分:3)

移动设备上的Javascript与社交媒体无关。它的发生主要是因为安全限制,证书等。请记住使用Javascript,您可以通过在AppsStore或Google Play中发布应用程序后加载新的JavaScript代码来欺诈业务逻辑。我相信Facebook会阻止移动设备上的javascript实现。

某些Cordova应用程序,例如US Bank ..,由于缺少SSL Pinning,甚至不使用$httpajax,它们对大多数模块使用本机实现。

不要让人失望,但......看看这个问题:Messenger Extensions SDK  于2015年6月4日开业

  

我尝试在移动应用上使用ngFacebook但是不起作用。我在桌面上测试过它完美无缺

你想要达到什么目的?如果您只需要登录,请尝试Does not works on cordova android project - 它使用原生Facebook插件。或official plugin for Facebook in Apache Cordova/PhoneGap

答案 1 :(得分:2)

对于社交媒体集成您应该使用官方cordovaOauth。您可以找到有关它的所有文档here。但要使用它,你应该包括

<script src="lib/ng-cordova.js"></script>
<script src="cordova.js"></script>

这些进入您的index.html。在您的控制器中,呼叫应该是:

$scope.login =  function() {
$cordovaOauth.facebook("YOUR_APP_ID", ["email","public_profile", "user_friends"]).then(function(result) {
    $http.get("https://graph.facebook.com/me", { params: { access_token: result.access_token, fields: "id,name,email,gender,location,website,picture,relationship_status", format: "json" }}).then(function(result1) {
//this is success call
//console.log(result1)
}, function(error) {
alert("There was a problem getting your profile. Check the logs for details.");
console.log(error);
});
}, function(error) {
console.log(error);
}); 
}

希望这会对你有所帮助。有关更多详细信息,您可以浏览ng-cordova.js此文件。