首页 > 解决方案 > 登录前验证电子邮件地址

问题描述

我试图在登录前验证用户的电子邮件地址。但是,当我尝试使用以下代码时,它会提示错误,因此我无法验证用户的电子邮件地址。

var user await ParseUser.LogInAsync(EmailU, PasswordU);
if (user["emailVerified"] = true )

这是错误消息:

错误 CS0818 必须初始化隐式类型变量

错误 CS0136 无法在此范围内声明名为“用户”的本地或参数,因为该名称在封闭的本地范围中用于定义本地或参数

错误 CS1002 ; 预期的

private async void BtnLoginUser_Click(object sender, System.EventArgs e)
{
    string EmailU = txtEmailU.Text.ToString();
    string PasswordU = txtPwU.Text.ToString();
    var user = new ParseUser();
    try
    {
        if (string.IsNullOrEmpty(EmailU))
        {
            Toast.MakeText(this, "Please Enter Email", ToastLength.Long).Show();
            return;
        }
        else if (string.IsNullOrEmpty(PasswordU))
        {
            Toast.MakeText(this, "Please Enter Password", ToastLength.Long).Show();
            return;
        }
        else 
        {
            ProgressDialog mDialog = new ProgressDialog(this);

            mDialog.SetTitle("Please Wait");
            mDialog.SetMessage("Loging");
            mDialog.SetCanceledOnTouchOutside(true);
            mDialog.SetProgressStyle(ProgressDialogStyle.Spinner);
            mDialog.Show();                    
            var user await ParseUser.LogInAsync(EmailU, PasswordU);
            if (user["emailVerified"] = true )
            {
                StartActivity(typeof(MainActivity));
            }
            else
            {
                Toast.MakeText(this, "Please Verify", ToastLength.Long).Show();
                return;
            }
            
        }
    }
    catch (Exception ep)
    {
        Toast.MakeText(this, "Some Error Occured " + ep.Message, ToastLength.Long).Show();
    }

标签: c#xamarinparse-platform

解决方案


相关行旁边的代码注释。

CS0136 错误是因为您user稍后通过重新声明它“遮蔽”了它,var user...我认为这应该与使用的声明相同,因此删除第一个或var从第二个中删除。

此外,您需要将分配await用户,因此您缺少=.

最后,您不想=在下一个if语句中使用,您想测试该值是否为真。您可以使用== true,但惯用的方式是使用if (user["emailVerified"]).

private async void BtnLoginUser_Click(object sender, System.EventArgs e)
{
  string EmailU = txtEmailU.Text.ToString();
  string PasswordU = txtPwU.Text.ToString();
  var user = new ParseUser();
  try
  {
    // ...
    else 
    {
        // ...
        mDialog.Show();                  
        // need = to assign to user
        // also remove var since already declared above (this fixes two errors)
        // OR remove the above declaration!  
        user = await ParseUser.LogInAsync(EmailU, PasswordU);
        // could be == true, but should just be user["emailVerified"]
        if (user["emailVerified"])
        {
            StartActivity(typeof(MainActivity));
        }
        else
        {
            Toast.MakeText(this, "Please Verify", ToastLength.Long).Show();
            return;
        }
    }
  }
  catch (Exception ep)
  {
     Toast.MakeText(this, "Some Error Occured " + ep.Message, ToastLength.Long).Show();
  }
}

注意:这很可能user["emailVerified"]不是原生 .Net 布尔值,您可能需要进行某种转换、解析或其他测试。您需要查看 API 的文档和/或检查调用返回的类型以确定这一点。


推荐阅读