注册前检查用户名是否存在时出错
本文关键字:存在 出错 是否 检查 用户 注册 | 更新日期: 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来打印我的成功消息。