web-dev-qa-db-ja.com

ParseException:無効なセッショントークンエラー

解析をチェックするためだけに単純なサインアップユーザーインターフェイスを実行しましたが、何らかの理由でユーザーを登録しようとするたびに、このエラーが発生します

これはコードです:

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();
                }
            }
        });

私はすでに問題を見つけるのに2日を費やしましたが、成功しませんでした。

7
kitsuneFox

解析データベースからいくつかのデータを手動で削除しました。その後、新しいユーザーをバックグラウンドで保存しようとしたときに、このエラーが発生していました。

com.parse.ParseRequest $ ParseRequestException:無効なセッショントークン

私の解決策は、apkをアンインストールして再度インストールすることでした。それは私にとってセッションの問題を解決しました。

重要:これはデバッグデータベースで行ったので、デバッグアプリをアンインストールして再度インストールしても問題ありませんでした。

11

前のセッションからログアウトしていない可能性があります。ログアウトロジックがあることを確認してください。また、別のユーザーにサインインまたはサインアップする前に、ユーザーのいずれかがログインしているかどうかを確認してください。

ベログコードが役立つかもしれません、

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

また、e.preventDefault();を追加することを忘れないでください。サインアップ機能で。

これが私がサインアップ機能を持っていた方法です。

$('.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);
            }
        });
});
10
sudheeshcm

この問題の理由は、同じ仮想デバイスで別の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();
6

Webアプリでこの問題が発生した場合は、すべての解析データのローカルストレージをクリアしてください。オンChromeこれは:

  1. 開発ツール(F12)
  2. 応用
  3. ローカルストレージ
  4. [エントリの解析]を選択し、Deleteキー(またはBackspace)を押します。
0
user1211030

手動でセッションをクリアしましたが、以前にサインアップしたのと同じデバイスから新しいユーザーをサインアップしようとしたときに同じ問題が発生しました。デバイス設定でアプリのデータをクリアすると、問題が修正されました。

0
Dagi

はい、ユーザーをサインアップした後、ユーザークラスからその行を削除した可能性があると思います。そのため、まず、アクティビティにこのコードを記述します。

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」と表示されます。

今、あなたはあなたのユーザーをサインアップすることができます:)これは私のために働きました。それがあなたにもうまくいくことを願っています。 詳細については をご覧ください。

0
MOHAN samara