How solved the login problem through facebook?

672

This has worked for me:

Future<User> signInWithFacebook() async {
    final facebookLogin = FacebookLogin();
    facebookLogin.loginBehavior = FacebookLoginBehavior.webViewOnly;
    final result = await facebookLogin.logIn(['email', 'public_profile']);
}

I'm using flutter_facebook_login: ^3.0.0

Share:
672
Vlados
Author by

Vlados

Updated on December 10, 2022

Comments

  • Vlados
    Vlados over 1 year

    I make an application in whitch you can log in using facebook.

    class MyApp extends StatefulWidget {
      @override
      _MyAppState createState() => new _MyAppState();
    }
    
    class _MyAppState extends State<MyApp> {
      static final FacebookLogin facebookSignIn = new FacebookLogin();
    
      final FirebaseAuth _fAuth = FirebaseAuth.instance;
    
      Future<FirebaseUser> _signIn(BuildContext context) async {
        Scaffold.of(context).showSnackBar(new SnackBar(
              content: new Text('Sign in button clicked'),
            ));
    
        final FacebookLoginResult result =
            await facebookSignIn.logInWithReadPermissions(['email']);
    
        FirebaseUser user =
            await _fAuth.signInWithFacebook(accessToken: result.accessToken.token);
    
        ProviderDetails userInfo = new ProviderDetails(
            user.providerId, user.uid, user.displayName, user.photoUrl, user.email);
    
        List<ProviderDetails> providerData = new List<ProviderDetails>();
        providerData.add(userInfo);
    
        UserInfoDetails userInfoDetails = new UserInfoDetails(
            user.providerId,
            user.uid,
            user.displayName,
            user.photoUrl,
            user.email,
            user.isAnonymous,
            user.isEmailVerified,
            providerData);
    
        Navigator.push(
          context,
          new MaterialPageRoute(
            builder: (context) => new DetailedScreen(detailsUser: userInfoDetails),
          ),
        );
    
        return user;
      }
    
      Future<Null> _signOut(BuildContext context) async {
        await facebookSignIn.logOut();
        Scaffold.of(context).showSnackBar(new SnackBar(
              content: new Text('Sign out button clicked'),
            ));
        print('Signed out');
      }
    
      @override
      Widget build(BuildContext context) {
        return new MaterialApp(
          home: new Scaffold(
            appBar: new AppBar(
              title: new Text('Fb Sign In with Firebase'),
            ),
            body: new Builder(
              builder: (BuildContext context) {
                return new Center(
                  child: new Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: <Widget>[
                      new MaterialButton(
                        //padding: new EdgeInsets.all(16.0),
                        minWidth: 150.0,
                        onPressed: () => _signIn(context)
                            .then((FirebaseUser user) => print(user))
                            .catchError((e) => print(e)),
                        child: new Text('Sign in with Facebook'),
                        color: Colors.lightBlueAccent,
                      ),
                    ],
                  ),
                );
              },
            ),
          ),
        );
      }
    }
    
    class UserInfoDetails {
      UserInfoDetails(this.providerId, this.uid, this.displayName, this.photoUrl,
          this.email, this.isAnonymous, this.isEmailVerified, this.providerData);
      final String providerId;
    
      final String uid;
    
      final String displayName;
    
      final String photoUrl;
    
      final String email;
    
      final bool isAnonymous;
    
      final bool isEmailVerified;
    
      final List<ProviderDetails> providerData;
    }
    
    class ProviderDetails {
      final String providerId;
    
      final String uid;
    
      final String displayName;
    
      final String photoUrl;
    
      final String email;
    
      ProviderDetails(
          this.providerId, this.uid, this.displayName, this.photoUrl, this.email);}
    

    But after presses on the button show up alert dialog from facebook whit text your program will have access to name, email and other public info. And button continue as ... After presses this button nothing happend and writes to the console

    I/flutter (17586): NoSuchMethodError: The getter 'token' was called on null.
    I/flutter (17586): Receiver: null
    I/flutter (17586): Tried calling: token
    I/FirebaseAuth(17586): [FirebaseAuth:] Loading module via FirebaseOptions.
    I/FirebaseAuth(17586): [FirebaseAuth:] Preparing to create service connection to gms implementation
    

    I used this command to get saha :

    keytool -importkeystore -srckeystore C: \ Users \ admin \ .android \ debug.keystore -destkeystore C: \ Users \ admin \ .android \ debug.keystore -deststoretypetype PKCS12" .
    

    Any assistance is very much appreciated.