ParseException:无效的会话令牌错误

时间:2015-04-01 08:53:01

标签: android parse-platform

我做了一个简单的注册用户界面只是为了检查解析但由于某种原因我每次尝试注册用户时都会给我这个错误

这是代码:

final ProgressDialog dlg = new ProgressDialog(this);
    dlg.setTitle("Please wait.");
    dlg.setMessage("Signing up.  Please wait.");
    dlg.show();

    String username_str = username.getText().toString();
    String password_str = password.getText().toString();
    String re_password_str = re_password.getText().toString();
    String email_str = email.getText().toString();
    String phone_str = phone.getText().toString();

    if(!re_password_str.equals(password_str)){
        dlg.dismiss();
        Toast.makeText(this,"Passwords does not match!!",Toast.LENGTH_SHORT).show();
        password.setText("");
        re_password.setText("");
    }else if(email_str.isEmpty()|| phone_str.isEmpty()){
        dlg.dismiss();
        Toast.makeText(this,"email or phone cannot be empty!!",Toast.LENGTH_SHORT).show();

    }else {
        ParseUser new_user = new ParseUser();
        new_user.setUsername(username_str);
        new_user.setPassword(password_str);
        new_user.setEmail(email_str);
        new_user.put("phone", phone_str);
        new_user.signUpInBackground(new SignUpCallback() {
            @Override
            public void done(ParseException e) {
                dlg.dismiss();
                if(e == null){
                    Intent i = new Intent(SignupActivity.this,MainActivity.class);
                    startActivity(i);
                }else{
                    Log.d("signup error", e.toString());
                    Toast.makeText(SignupActivity.this,e.toString(),Toast.LENGTH_SHORT).show();
                }
            }
        });

我已经花了两天时间找到问题但没有成功......

8 个答案:

答案 0 :(得分:11)

我已从Parse数据库中手动删除了一些数据。之后,当我尝试在后台保存新用户时出现此错误:

  

com.parse.ParseRequest $ ParseRequestException:无效的会话令牌

我的解决方案是卸载apk并再次安装。它为我解决了会话问题。

答案 1 :(得分:10)

您可能没有从之前的会话中退出。确保您有一个注销逻辑。在登录或注册其他用户之前,请检查您的用户是否已登录。

belog代码可能有帮助,

    var currentUser = Parse.User.current();
                if (currentUser) {
                    // do stuff with the user
                    Parse.User.logOut();
                } 

也不要忘记添加e.preventDefault();在你的注册功能。

这就是我的signUp功能..

$('.form-signup').on('submit', function(e) {

        var currentUser = Parse.User.current();
                if (currentUser) {
                    // do stuff with the user
                    Parse.User.logOut();
                } 

        e.preventDefault();
        var user = new Parse.User();

        var username = $('#username').val();
        var password = $('#password').val();
        var email = $('#email').val();

        user.set("username", username);
        user.set("password", password);
        user.set("email", email);

        user.signUp(null, {
            success: function(user) {
                //signup successfull
                alert("user created..!! User name: "+ username);
                window.location = "login.html";
            },
            error: function(user, error) {
                // Show the error message somewhere and let the user try again.
                console.log("Error: " + error.code + " " + error.message);
                //alert("User not created..!! " + error.message);
                $("H5").html("User not created..!! " +error.message);
            }
        });
});

答案 2 :(得分:4)

此问题的原因是您可能正在同一虚拟设备上测试另一个Parse应用程序,因此用户凭据仍用于新应用程序。所以,解决方法是

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Add this line and run your application
        ParseUser.getCurrentUser().logOut();

答案 3 :(得分:1)

这是由于从数据库中删除了数据,但是本地存储仍然具有该数据。因此,您必须清除本地存储中的数据。

例如。 对于Javascript(浏览器):

window.localStorage.clear()

对于React Native:

AsyncStorage.clear();

对于android: 清除缓存或重新安装应用

答案 4 :(得分:0)

这似乎是Parse SDK中的已知错误。论坛上已经报告了一个错误。他们声称已在最新版本1.7.3中修复此问题。但它也不适合我。

请参阅此https://developers.facebook.com/bugs/756392341145634/?search_id

答案 5 :(得分:0)

我手动清除了会话,尝试从之前注册的同一设备注册新用户时遇到了同样的问题。在DEVICE设置中清除应用程序的数据可解决问题。

答案 6 :(得分:0)

是的,我认为在注册用户后,您可能已经从用户类中删除了该行,因此,首先在“活动”中编写此代码

if(ParseUser.getCurrentUser()!=null){
   Toast.makeText(this,"yes not null",Toast.LENGTH_SHORT).show();
   ParseUser.logOut();
}
else{
   Toast.makeText(this," null",Toast.LENGTH_SHORT).show();
}

您可以在运行应用程序时找到不同之处,首先,它将为您烤“是不是null”,然后,如果再次运行您的应用程序,它将显示为“ null”

现在您可以注册用户了:) 这对我有用。 希望它也对您有用。 You can find more info at

答案 7 :(得分:0)

如果您在Web应用程序中遇到此问题,请清除所有Parse数据的本地存储。在Chrome上是:

  1. 开发人员工具(F12)
  2. 应用程序
  3. 本地存储
  4. 选择“分析”条目,然后按Delete键(或Backspace键)