Как я могу сохранить сеанс входа пользователя Facebook в приложении флаттера? - PullRequest
1 голос
/ 25 февраля 2020

Я хочу сохранить пользовательские сеансы входа в Facebook в моем приложении, чтобы пользователю не приходилось входить в систему каждый раз, когда приложение снова открывалось. Я уже сделал это с Google, но не могу найти что-нибудь о Facebook. Вот мой код аутентификации.

  Future<void> logInWithFacebook() async {
    final result = await fbLogin.logIn(['email']);

    switch (result.status) {
      case FacebookLoginStatus.loggedIn:
        final token = result.accessToken.token;
        final graphResponse = await http.get(
            'https://graph.facebook.com/v2.12/me?fields=name,picture,email&access_token=${token}');
        final profile = JSON.jsonDecode(graphResponse.body);
        print(profile);
        await Navigator.push(context,MaterialPageRoute(builder: (context)=>HomePage()));
        setState(() {
          userProfile = profile;
          isAuth = true;
        });
        break;

      case FacebookLoginStatus.cancelledByUser:
        setState(() => isAuth = false);
        break;
      case FacebookLoginStatus.error:
        setState(() => isAuth = false);
        break;
    }
  }

1 Ответ

1 голос
/ 25 февраля 2020

Сохраните свой токен или ваше состояние входа в Shared Preference. Вот ссылка на пакет Flutter

Shared Preference Package

SharedPreferences prefs = await SharedPreferences.getInstance();

Я бы предложил сделать эту глобальную переменную, чтобы разделить ее доступ со всем пакетом приложения. , После этого вы можете сделать что-то вроде этого

prefs.setBool("pref_logged_user",isLoggedIn);

Где pref_logged_user - это ключ, который будет использоваться для доступа к данным

bool isLoggedIn = await prefs.getBool("pref_logged_user")??false;

?? используется для проверки, является ли вывод нулевым Если ноль, вернуть false;

...