ngFacebook与Phonegap无法配合使用

8
我在我的当前angular应用程序中使用Almog Baku的ngFacebook。在测试环境中,它可以正常工作。但是在通过phonegap构建的apk中,它无法正常工作。我已经包含了 和
<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();

{btsdaf} - Ramesh Rajendran
{btsdaf} - Debra
1
{btsdaf} - Debra
1
当赏金可用时,我会去做。 - Ramesh Rajendran
@RameshRajendran 兄弟,请现在为它添加一些赏金... - Debra
2个回答

3
移动设备上的Javascript与社交媒体不兼容。这主要是由于安全限制、证书等原因造成的。请注意,使用Javascript可以通过在应用程序发布在AppsStore或Google Play之后加载新的Javascript代码来欺骗业务逻辑。我相信Facebook会阻止移动设备上的Javascript实现。
例如,一些Cordova应用程序(如美国银行...)甚至不使用$http或ajax,因为缺乏SSL Pinning,它们大多数模块都使用本地实现。
不想让你失望,但是请看一下这个问题:Does not works on cordova android project,该问题于2015年6月4日开放。

我试图在移动应用程序中使用ngFacebook,但它不起作用。我在桌面上进行了测试,它完美运行。


如果您只需要登录,可以尝试使用Apache Cordova/PhoneGap中Facebook的官方插件 - 它使用本地的Facebook插件。或者cordova-plugin-facebook4

2

对于社交媒体集成,您应该使用官方的cordovaOauth。您可以在这里找到所有相关文档。但要使用它,您应该包含以下内容:

<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 这个文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接