【问题标题】:FirebaseError Exception Email/Password AuthenticationFirebaseError 异常电子邮件/密码身份验证
【发布时间】:2015-07-31 10:00:09
【问题描述】:

我正在使用 Firebase 用户身份验证、电子邮件/密码方法。 我想测试我是否可以更改我的电子邮件,并且当它正确时我一直收到电子邮件无效,当我一直按下更改是开始更改电子邮件方法的按钮时,我得到了这个。

FirebaseError:执行请求时出现异常:意外字符('

在 [来源:org.apache.http.conn.EofSensorInputStream@3f1bc11e;行:1,列:2]

有人知道如何解决这个问题吗?

public class ChangeEmail extends BaseActivity implements View.OnClickListener {

EditText Password, CurrentEmail, NewEmail;
String FirebaseUserNewEmail, FirebasePassword, FirebaseUserCurrentEmail;
Button buttonDone;
public static final String DEFAULT = "N/A";
String username;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    /**
     * Adding our layout to parent class relative layout.
     */
    getLayoutInflater().inflate(R.layout.changeemail, RelativeLayout);

    CurrentEmail = (EditText) findViewById(R.id.CurrentEmail);
    NewEmail = (EditText) findViewById(R.id.NewEmail);
    buttonDone = (Button) findViewById(R.id.buttonDone);
    buttonDone.setOnClickListener(this);
    // Password - Edit Text
    Password = (EditText) findViewById(R.id.Password);
    // Make text style stay the same / as default
    Password.setTypeface(Typeface.DEFAULT);
    // Make password confidential.
    Password.setTransformationMethod(new PasswordTransformationMethod());

    SharedPreferences prefs = getSharedPreferences("project", 0);
    username = prefs.getString("keyusername", DEFAULT);

    SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(ChangeEmail.this);
    username = settings.getString("keyusername", DEFAULT);

    setTitle("Settings");

}

@Override
public void onResume() {
    super.onResume();
}

@Override
public void onPause() {
    super.onPause();
}

@Override
public void onStop() {
    super.onStop();
}

public void onDestroy() {
    super.onDestroy();
}

public void ChangeEmail()
{
    FirebaseUserCurrentEmail = CurrentEmail.getText().toString();
    FirebaseUserNewEmail = NewEmail.getText().toString();
    FirebasePassword = Password.getText().toString();
    System.out.println("Current Email :" + FirebaseUserCurrentEmail);
    System.out.println("New Email :" + FirebaseUserNewEmail);
    System.out.println("Password :" + FirebasePassword);
    Firebase ref = new Firebase("https://tapamp.firebaseio.com");
    ref.changeEmail(FirebaseUserCurrentEmail, FirebaseUserNewEmail, FirebasePassword, new Firebase.ResultHandler() {
        @Override
        public void onSuccess() {
            Toast.makeText(getApplicationContext(), "Welcome " + FirebaseUserNewEmail, Toast.LENGTH_SHORT).show();
            Intent a = new Intent(ChangeEmail.this, HomePage.class);
            startActivity(a);
        }
        @Override
        public void onError(FirebaseError firebaseError) {
            Toast.makeText(getApplicationContext(), "" + firebaseError, Toast.LENGTH_LONG).show();
            switch (firebaseError.getCode()) {
                case FirebaseError.USER_DOES_NOT_EXIST:
                    // handle a non existing user
                    break;
                case FirebaseError.INVALID_PASSWORD:
                    // handle an invalid password
                    break;
                case FirebaseError.INVALID_EMAIL:
                    Toast.makeText(getApplicationContext(), "Invalid Email" , Toast.LENGTH_SHORT).show();
                    break;
                default:
                    // handle other errors
                    break;
            }
        }
    });
}

@Override
public void onClick(View view) {
    if (view == buttonDone) {
        ChangeEmail();
    }
    else if (view == buttonLogout)
    {
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                context);

        alertDialogBuilder.setIcon(R.drawable.trunk);
        alertDialogBuilder.setTitle("Log out"); // your dialog title
        // set dialog message
        alertDialogBuilder
                .setMessage("Are you sure?")
                .setCancelable(true)
                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        Intent a = new Intent(ChangeEmail.this, LoginPage.class);
                        a.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
                        a.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                        finish();
                        startActivity(a);
                        Firebase ref = new Firebase("https://tapamp.firebaseio.com");
                        ref.unauth();
                    }
                })
                .setNegativeButton("No", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        // if this button is clicked, just close
                        // the dialog box and do nothing
                        dialog.cancel();
                    }
                });

        // create alert dialog
        AlertDialog alertDialog = alertDialogBuilder.create();

        // show it
        alertDialog.show();
    }
}

}

【问题讨论】:

  • 不可能说出哪里出了问题,除非您向我们提供重现问题所需的最少代码。见stackoverflow.com/help/mcve
  • @FrankvanPuffelen 将添加它!
  • @FrankvanPuffelen 嗨,添加了代码想知道您是否可以帮我看一下?提前谢谢你!
  • 太棒了。两个问题:你能标出抛出异常的那一行吗?第二:你能不能用硬编码值替换FirebaseUserCurrentEmailFirebaseUserNewEmailFirebasePassword再试一次?如果它仍然有效,请更新问题中的代码。 (如果不清楚,我试图帮助您将问题隔离到代码的特定部分。)
  • @FrankvanPuffelen 嘿,弗兰克,我找到了解决方案。网站上给出的参数与代码中的参数不同。在网站上,传入的参数是 OldEmail、NewEmail、Password,但在代码中是 OldEmail、Password、NewEmail。非常感谢您的帮助!

标签: java android firebase


【解决方案1】:

网站上给出的参数与代码中的参数不同。在网站上,传入的参数是OldEmail、NewEmail、Password,但在代码中是OldEmail、Password、NewEmail。

【讨论】:

    猜你喜欢
    • 2019-07-13
    • 1970-01-01
    • 2021-11-21
    • 2016-10-13
    • 2018-11-11
    • 2013-07-11
    • 2019-08-05
    • 2019-03-15
    • 2016-11-13
    相关资源
    最近更新 更多