كيفية الحفاظ على تسجيل دخول المستخدم طوال عمر التطبيق؟

StackOverflow https://stackoverflow.com//questions/21048282

  •  21-12-2019
  •  | 
  •  

سؤال

أواجه مشكلة في الاحتفاظ بتسجيل دخول المستخدم طوال عمر التطبيق، حيث يكون "تسجيل الدخول" موجودًا في النشاط الرئيسي، وعندما أبدأ نشاطًا آخر، ما زلت مسجلاً الدخول ويمكنني تحميل البيانات إلى Quickblox، ولكن بعد أن أبدأ نشاط آخر ثم ابدأ مرة أخرى في النشاط حيث قمت بتحميل البيانات إلى Quickblox، يظهر لي خطأ عند محاولة تحميل البيانات:""الرمز مطلوب""...

يحرر:

 QBSettings.getInstance().fastConfigInit(String.valueOf(APP_ID), AUTH_KEY, AUTH_SECRET);
    QBUser user = new QBUser("login", "password");
    QBAuth.createSession(user, this, QBQueries.SIGN_IN);
هل كانت مفيدة؟

المحلول

أعتقد أنها مسألة أخرى

"الرمز المميز مطلوب" يعني أنك لم تقم بإنشاء جلسة وتحاول إجراء استعلام آخر

يجب عليك إنشاء جلسة بشكل صحيح أولاً

        QBAuth.createSession(new QBCallbackImpl() {
            @Override
            public void onComplete(Result result) {
                if (result.isSuccess()) {
                    // do other requests here 
                    //
                } else {
                    handleErrors(result);
                }
            }
        });

إذا لم تكن هذه مشكلة بالنسبة لك - فيرجى تقديم المزيد من التعليمات البرمجية في سؤالك

محدث

1) حاول التحقق من الرمز المميز بحثًا عن قيمة فارغة

try {
    String token = BaseService.getBaseService().getToken();
    if(token == null){
        // recreate session here
    }
} catch (BaseServiceException e) {
    e.printStackTrace();
}

نصائح أخرى

لست متأكدًا من كيفية استخدام واجهة برمجة التطبيقات هذه التي تستخدمها هنا، ولكن إذا كنت تريد اقتراحًا بديلاً، فقد استخدمته دائمًا SharedPreferences لحفظ جلسات المستخدم.

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = settings.edit();
editor.putString("username", username); // Save the username with tag "username"
editor.putString("password", password); // Save the password with tag "password"
editor.commit();

وللحصول على معلومات المستخدم مرة أخرى:

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
u = settings.getString("username", null);
p = settings.getString("password", null);
if(u == null && p == null) {...} // No saved user session, have user sign in
else {...} // User already logged in, go to main screen 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top