注册前检查用户名是否存在时出错

本文关键字:存在 出错 是否 检查 用户 注册 | 更新日期: 2023-09-27 18:25:55

***我找出了导致错误的原因,这是由于我在SignUpAsync、内部调用了error.message.text

我希望我能在这里得到一些帮助,我已经登录了两天了。。

我有注册工作,但如果我再次使用相同的用户名,它不会工作,但它不会返回任何错误或任何我可以使用的东西,并提醒用户。。。

我正在使用文档中的这个

//try and register user and catch any errors.
            try
            {
                Task signUpTask = user.SignUpAsync().ContinueWith(t => {
                    if (t.IsFaulted)
                    {
                        // Errors from Parse Cloud and network interactions
                        using (IEnumerator<System.Exception> enumerator = t.Exception.InnerExceptions.GetEnumerator())
                        {
                            if (enumerator.MoveNext())
                            {
                                ParseException error = (ParseException)enumerator.Current;
                                ErrorMessage.text = error.Message;
                                Invoke("ClearForm", 4);
                                // error.Message will contain an error message
                                // error.Code will return "OtherCause"
                            }
                        }
                    }
                    else
                    {
                        ErrorMessage.color = Color.green;
                        ErrorMessage.text = "Login Success";
                    }
                });
            }
            catch (InvalidOperationException e)
            {
                ErrorMessage.color = Color.red;
                ErrorMessage.text = e.Message;
                Invoke("ClearForm", 4);
                // Error from the SDK logic checks
                // e.Message will contain the specific error
                // ex: "Cannot sign up user with an empty name."
            }

由于我在这方面失败了两天,我决定只做一个函数,在每次更新输入字段时检查用户名,但即使这样也不起作用。。。他们只有一个关于如何查询用户的小例子。。。它确实需要一些示例文档。。请

这是我试过的。

public void CheckUserName()
{
    if (UserNameInput.text.Length > 2)
    {
        ParseUser.Query.WhereEqualTo("username", UserNameInput.text).FindAsync().ContinueWith(t =>
        {
            if (t.Result.Any())
            {
                //it found someone make error symbol
                UserNameInputError.sprite = ErrorSprite;
                UserNameInputError.enabled = true;
                ErrorMessage.color = Color.red;
                ErrorMessage.text = "UserName Taken";
            }
            else
            {
                //it didnt? make success symbol
                UserNameInputError.sprite = SuccessSprite;
                UserNameInputError.enabled = true;
                ErrorMessage.color = Color.green;
                ErrorMessage.text = "UserName Availible";
            }
        });
    }
    else
    {
        UserNameInputError.sprite = ErrorSprite;
        UserNameInputError.enabled = true;
        ErrorMessage.color = Color.red;
        ErrorMessage.text = "Username Must be More Than 2 Characters";
    }
}

然而,这似乎不起作用,我也没有从parse得到任何反馈。。控制台中只有2个错误,这可能是相关的?

错误为:

get_isActiveAndEnabled can only be called from the main thread. Constructors and field initializers will be executed from the loading thread when loading a scene. Don't use this function in the constructor or field initializers, instead move initialization code to the Awake or Start function.

set_enabled can only be called from the main thread. Constructors and field initializers will be executed from the loading thread when loading a scene. Don't use this function in the constructor or field initializers, instead move initialization code to the Awake or Start function.

我希望有人能帮忙。。请给我一个如何检查用户名存在的例子?

如何在我上面的signuptask中发现登录错误?

以及如何将电子邮件存储在parseuser中,这是我成功登录facebook后得到的。。

非常感谢。。

注册前检查用户名是否存在时出错

解决了这个问题。我在async内部调用统一方法。。意识到我不需要这样做,因为我可以检测parseuser.currentuser是否为null来打印我的成功消息。