javascript - 解析 Facebook 登录在 ionic View 中不起作用

标签 javascript facebook ionic-framework

我正在尝试让 Parse.FacebookUtils.logIn 在 Ionic View 上工作,当我在浏览器中点击 ionic serve 时,我已经成功地让它工作,但问题是当我尝试使用 Ionic 登录时查看模拟器,基本上不会弹出身份验证 Facebook 窗口,我不知道为什么。

我遵循了这个文档: https://www.parse.com/docs/js/guide#users-facebook-users

一切都在浏览器中运行良好,只是试图使其在 Ionic View 中运行。

有什么想法吗?

最佳答案

我放弃了使用 Ionic 的 Parse sdk 并开始使用另一个使用以下文档的插件:

http://ngcordova.com/docs/plugins/oauth/

https://github.com/nraboy/ng-cordova-facebook-example/blob/master/www/js/app.js

这是我为使其与 Parse 一起工作而编写的代码:

$scope.fbLogin = function() {
            var result;
            $cordovaOauth.facebook('987971754588010', ['public_profile, user_birthday, email']).then(function(success) {

                $http.get("https://graph.facebook.com/v2.2/me", { params: { access_token: success.access_token, fields: "id,name,birthday,last_name,first_name,email,gender,picture.type(large)", format: "json" }}).then(function(result) {

                    $localstorage.setObject('fbData', result.data);

                    var expiration_date = new Date();
                    expiration_date.setSeconds(expiration_date.getSeconds() + success.expires_in);
                    expiration_date = expiration_date.toISOString();

                    var facebookAuthData = {
                        "id": result.data.id,
                        "access_token": success.access_token,
                        "expiration_date": expiration_date
                    };

                    Parse.FacebookUtils.logIn(facebookAuthData, {
                        success: function(user) {
                            if (!user.existed()) {
                                alert("User signed up and logged in through Facebook!");
                                $scope.openModal();
                            } else {
                                alert("User logged in through Facebook!");
                                $scope.syncFbData(null);
                            }
                        },
                        error: function(user, error) {
                            console.log('ERROR: ' + error);
                            var alertPopup = $ionicPopup.alert({
                                title: 'Error de autenticación de usuario',
                                template: 'El usuario canceló autenticación con Facebook o no autorizó permisos. '
                            });
                        }
                    });
                }, function(error) {
                    console.log('ERROR: ' + error);
                    var alertPopup = $ionicPopup.alert({
                        title: 'Error de conexión',
                        template: 'No se ha logrado establecer conexión con Facebook.'
                    });
                });
            }, function(error) {
                console.log('ERROR: ' + error);
                var alertPopup = $ionicPopup.alert({
                    title: 'Error de conexión',
                    template: 'No se ha logrado establecer conexión con Facebook.'
                });
            });
        };

        $scope.syncFbData = function (newUsername) {
            var fbData = $localstorage.getObject('fbData')
            var currentUser = Parse.User.current();
            if (newUsername) {
                currentUser.set('username', newUsername);
            }
            currentUser.set('nombre', fbData.first_name);
            currentUser.set('apellidos', fbData.last_name);
            currentUser.set('email',fbData.email);
            currentUser.set('fechaNacimiento', new Date(fbData.birthday));
            currentUser.set('imagenUrl',fbData.picture.data.url);
            currentUser.set('genero',((fbData.gender === 'male') ? 'Hombre' : 'Mujer') );
            currentUser.save(null, {
                success: function (response) {
                    $scope.closeModal();
                    $state.go('app.lista-cervezas');
                },
                error: function (response, error) {
                    console.log('ERROR: ' + error);
                    var alertPopup = $ionicPopup.alert({
                        title: 'Nombre de usuario invalido',
                        template: 'El nombre de usuario ingresado ya se encuentra en uso!'
                    });
                }
            });
        };

关于javascript - 解析 Facebook 登录在 ionic View 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33600172/

相关文章:

facebook - Facebook 在用户墙上显示时是否会预取链接网址?

facebook - 如何使用应用程序访问 token 在 Rails 中发布 OpenGraph 操作

angular - Ionic 5 中 CanDeactivate 守卫的导航问题

javascript - Timeago + DateJS = NaN

javascript - 从单个文件导出 typescript 类和接口(interface)

javascript - 在我的网站上实现潘多拉 channel 作为背景音乐。 Jquery 或 JavaScript

Facebook 权限对话框在开始时自动为新访客打开,询问基本权限

html - 位置3个div,左边一个,右边两个(上方和下方)分别

angular - 无法通过 2 个级别传递 ngModel

javascript - 如何让 Dojo 中的荷兰语言环境正常工作?