Swift OSX - Parse.com - 保存新用户而不改变

Swift OSX - Parse.com - Save new user without changing

我正在尝试使用 Parse 在我的数据库中添加新用户。我无法不调用注册方法直接保存新用户,但注册后用户更改为注册用户,我想保留之前使用该软件的同一用户。

我在 Whosebug 的这个 link 上发现我需要保存预览会话,在新用户注册过程之后我可以调用方法 become 来恢复在使用保存的会话之前正在使用的用户,但它返回给我一个错误:[Error]: invalid session token (Code: 209, Version: 1.15.3)。这是代码:

Usuario.swift

import Foundation

import Parse

class Usuario: PFUser {

    @NSManaged var nome: String?
}

保存新用户的动作

@IBAction func adicionarGerenciadorButtonClicked(_ sender: NSButton) {

    let gerenciador = Usuario()

    gerenciador.nome = nomeGerenciadorTextField.stringValue
    gerenciador.username = emailGerenciadorTextField.stringValue
    gerenciador.email = emailGerenciadorTextField.stringValue
    gerenciador.password = senhaGerenciadorSecureTextField.stringValue

    let gerenciadorTokenAtual = Usuario.current()!.sessionToken
    print(gerenciadorTokenAtual)

    gerenciador.signUpInBackground(block: {
            (success, error) -> Void in

            do {
                try Usuario.become(gerenciadorTokenAtual!)
            } catch {

            }

            if error == nil {
                self.gerenciadores.append(gerenciador)

                self.nomeGerenciadorTextField.stringValue = ""
                self.emailGerenciadorTextField.stringValue = ""
                self.senhaGerenciadorSecureTextField.stringValue = ""
            } else {
                self.mostrarErro(mensagem: "Erro", informativo: "Houve um erro ao tentar salvar o gerenciador")
            }
        })
    }
}

我创建了一个 'Parse Cloud' 方法,允许我使用 'Master Key'

Parse.Cloud.define('salvarUsuario', function(request, response) {

  var nomeCompleto = request.params.nomeCompleto;
  var Email = request.params.Email;
  var Username = request.params.Username;
  var cpf = request.params.cpf;
  var Password = request.params.Password;
  var funcionarioBool = request.params.funcionarioBool;
  var ativo = request.params.ativo;
  var primeiroAcesso = request.params.primeiroAcesso;
  var tipoAcesso = request.params.tipoAcesso;
  var medicoBool = request.params.medicoBool;

  //Parâmetros de controle
  var fotoSelecionada = request.params.fotoSelecionada;

  var usuario = new Parse.User();

  usuario.set("nomeCompleto", nomeCompleto);
  usuario.set("email", Email);
  usuario.set("username", Username);
  usuario.set("cpf", cpf);
  usuario.set("password", Password);
  usuario.set("funcionarioBool", funcionarioBool);
  usuario.set("ativo", ativo);
  usuario.set("primeiroAcesso", primeiroAcesso);
  usuario.set("tipoAcesso", tipoAcesso);
  usuario.set("medicoBool", medicoBool);

  if(medicoBool) {
    var medicoId = request.params.medico;
    var Medico = Parse.Object.extend("Medico");
    var medicoPointer = Medico.createWithoutData(medicoId);
    usuario.set("medico", medicoPointer);
  }

  if(fotoSelecionada) {
    var bytes = request.params.bytesFoto;
    var file = new Parse.File("foto.png", bytes, "image/png");

    usuario.set("foto", file);
  }

  usuario.save(null, {
      useMasterKey: true,
      success: function(salvoUsuario){
          // The user was saved correctly
          response.success("1");

      },
      error: function(error){
          response.error("Erro ao criar novo usuário");
      }
  });
});