从inappbrowser中检索数据

时间:2016-04-19 14:38:26

标签: javascript cordova ionic-framework

我目前正在构建离子混合应用程序。

不幸的是,我在Facebook注册过程中无法访问请求的响应数据。

我们希望从inappbrowser中检索数据,并使用Cordova的inappbrowser进行回调。不幸的是我们不能。实现这个目标的最佳方法是什么?

function InAppBrowser($scope, $cordovaInAppBrowser, $rootScope, $http, $window) {

    var durr;

    $scope.facebook = facebook;
    $scope.foobar = foobar;

    function facebook() {

        var options = {
            location: 'no',
            clearcache: 'yes',
            toolbar: 'no'
        };

        durr = $cordovaInAppBrowser.open('https://www.facebook.com/dialog/oauth?scope=email,public_profile,user_friends,user_likes,user_photos,user_posts&client_id={client_id}&redirect_uri={callback_url}', '_blank', options)
        .then(function(e) {
            console.log(e);
        })
        .catch(function(e) {
            console.log(e);
        });

        $rootScope.$on('$cordovaInAppBrowser:loadstop', function(e, event) {
            $cordovaInAppBrowser.executeScript(
            { code: "localStorage.setItem('hurr', document.body.innerHTML)" },    
            function(data) {
                console.log(data);
            });
        });
    }

    function foobar() {
        console.log(durr);
        // console.log(durr.localStorage.getItem('hurr'));
    }
}

1 个答案:

答案 0 :(得分:2)

我不会将此用于Facebook,而是插件Oauth。此插件使用InAppBrowser:“https://github.com/nraboy/ng-cordova-oauth/blob/master/README.md”。它使用起来非常简单。

$cordovaOauth.facebook("Your client id", "scope", "options").then(function (result) {
          Console.log(JSON.stringify(result);
          // Get the information about the user's account
          // See more at https://developers.facebook.com/docs/graph-api/reference/v2.2/user
          $http.get("https://graph.facebook.com/v2.2/me", {
            params: {
              access_token: "your token",
              fields: "id,last_name,first_name,gender,picture,birthday,location,email",
              format: "json"
            }
          }).then(function (result) {
            /** your code **/
          }