Meteor.loginwithpassword无法在iOS上运行

时间:2015-05-05 15:43:06

标签: javascript ios html5 cordova meteor

我正在开发适用于iOS 8.3 +的Meteor应用程序,而且我在使用帐户密码包在iOS上运行时遇到了问题。

我的登录代码为:

Template.login.events({
"submit #login-form": function()
{
    $.ajax({
        url: "http://www.drupalsite.com/api/v1/user/login.json",
        type: "POST",
        dataType: "json",
        data: $("#login-form").serializeArray(),
        error: function(data)
        {
            alert(data.responseJSON[0]);
        },
        success: function(Drupal)
        {
            alert("User being checked...");
            Accounts.createUser({
                username: $("#username").val(),
                password: $("#password").val(),
                email: Drupal.mail,
                profile: 
                    {
                        uid: Drupal.uid,
                        name: Drupal.user.field_first_name.und[0].safe_value + " "+ Drupal.user.field_last_name.und[0].safe_value
                    }

            }, function(error, result){

                if(error)
                {

                    Meteor.loginWithPassword($("#username").val(), $("#password").val());
                    alert("User Logged In");
                    $('.login').animate({
            }, 0, function() {
                $('.sign-in').removeClass('open');
                $('.login').removeClass('open');

            });

                } else
                {
                    alert("User Created");
                }

            });

        }
    });

    return false;
}

});

正如您所看到的,我正在验证Drupal用户,该工作正常。应用程序本身也适用于浏览器。我得到的问题是,当我创建原生ios应用时,Meteor.loginwithpasswordAccounts.createUser方法停止工作。

出于测试目的,我创建了一个新的meteor应用程序,该应用程序只有{{> loginButtons}}模板并将其部署到iOS。登录显示在模拟器中。它不会出现在设备上。

以下是我使用的软件包的完整列表:enter image description here

我在这里做错了什么?

BTW,无论如何我都可以告诉我,我可以改进我的问题。

2 个答案:

答案 0 :(得分:1)

如果您在移动项目中使用“帐户”软件包,则必须有一台服务器供移动设备呼叫。

虽然您可以在本地计算机上使用帐户包(无论是浏览器还是模拟器),但请在移动设备的命令行中使用此包:

meteor build ~/.meteor/local --server=http://{{your server here}}.com

然后这样做:

meteor run ios-device --mobile-server http://{{your server here}}.com

确保您的版本配置正确。

如果您没有服务器而不是使用以下方法将应用程序部署到meteor.com服务器作为临时解决方案:

meteor deploy "{{your-app-name-here}}.meteor.com"

这里要小心。很多流星开发者正在测试,所以你想尝试使名称尽可能独特。

希望这有助于某人!

答案 1 :(得分:0)

要在本地计算机上运行(用于开发),首先找到您的IP(/sbin/ifconfig将在Linux和OSX上提供帮助。)

然后运行

 meteor run  --mobile-server <IP:PORT> <PLATFORM-DEVICE>

在我的情况下,我的开发机器的IP是192.168.1.66。并且meteor在默认端口(3000)上运行,因此命令为:

 meteor run  --mobile-server 192.168.1.66:3000 ios-device

注意:

  • 没有端口,它对我不起作用。
  • 确保您的手机/移动设备位于同一网络中/可以访问您的开发机器(即:在我的情况下可以访问192.168.1.66)
  • 运行'meteor build ...',对我来说没有必要做这项工作。