解析をチェックするためだけに単純なサインアップユーザーインターフェイスを実行しましたが、何らかの理由でユーザーを登録しようとするたびに、このエラーが発生します
これはコードです:
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日を費やしましたが、成功しませんでした。
解析データベースからいくつかのデータを手動で削除しました。その後、新しいユーザーをバックグラウンドで保存しようとしたときに、このエラーが発生していました。
com.parse.ParseRequest $ ParseRequestException:無効なセッショントークン
私の解決策は、apkをアンインストールして再度インストールすることでした。それは私にとってセッションの問題を解決しました。
重要:これはデバッグデータベースで行ったので、デバッグアプリをアンインストールして再度インストールしても問題ありませんでした。
前のセッションからログアウトしていない可能性があります。ログアウトロジックがあることを確認してください。また、別のユーザーにサインインまたはサインアップする前に、ユーザーのいずれかがログインしているかどうかを確認してください。
ベログコードが役立つかもしれません、
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);
}
});
});
この問題の理由は、同じ仮想デバイスで別の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();
Webアプリでこの問題が発生した場合は、すべての解析データのローカルストレージをクリアしてください。オンChromeこれは:
手動でセッションをクリアしましたが、以前にサインアップしたのと同じデバイスから新しいユーザーをサインアップしようとしたときに同じ問題が発生しました。デバイス設定でアプリのデータをクリアすると、問題が修正されました。
はい、ユーザーをサインアップした後、ユーザークラスからその行を削除した可能性があると思います。そのため、まず、アクティビティにこのコードを記述します。
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」と表示されます。
今、あなたはあなたのユーザーをサインアップすることができます:)これは私のために働きました。それがあなたにもうまくいくことを願っています。 詳細については をご覧ください。