首页 文章

Google,Facebook使用Flutter登录支持

提问于
浏览
13

我是Flutter的新手,有什么方法可以使用 GOOGLE/FACEBOOK 与Flutter一起登录 .

谢谢

4 回答

  • 1

    从现在开始添加这个迟到的答案有packageflutter_facebook_login 替换 flutter_facebook_connect . 这是一个有效的 main.dart 示例 . 请记住,您必须按照存储库中的说明跟踪所有configuration,并且必须配置一个Facebook应用程序:

    import 'package:flutter/material.dart';
    import 'package:flutter_facebook_login/flutter_facebook_login.dart';
    import 'dart:async';
    
    void main() => runApp(new MyApp());
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return new MaterialApp(
          title: 'Flutter Facebook Login',
          theme: new ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: new MyHomePage(title: 'Flutter Login Facebook'),
        );
      }
    }
    
    class MyHomePage extends StatefulWidget {
      MyHomePage({Key key, this.title}) : super(key: key);
    
      final String title;
    
      @override
      _MyHomePageState createState() => new _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {    
      login() async {
        final facebookLogin = new FacebookLogin();
        final result = await facebookLogin.logInWithReadPermissions(['email']);
        switch (result.status) {
          case FacebookLoginStatus.loggedIn:
            print(result.accessToken.token);
            break;
          case FacebookLoginStatus.cancelledByUser:
            print('CANCELED BY USER');
            break;
          case FacebookLoginStatus.error:
            print(result.errorMessage);
            break;
        }
      }
    
      @override
      Widget build(BuildContext context) {
        return new Scaffold(
          appBar: new AppBar(
            title: new Text(widget.title),
          ),
          floatingActionButton: new FloatingActionButton(
            onPressed: login,
            tooltip: 'Login With Facebook',
            child: new Icon(Icons.add),
          ),
        );
      }
    }
    

    单击右下方按钮时应该会看到登录屏幕,并在调试控制台上检查打印的响应:

    enter image description here

    这是现在的方法,因为该软件包实际上在Android和iOS上使用本机Facebook登录SDK . 所以没有理由使用Firebase或自己界面!

    希望它有助于其他有Facebook登录麻烦的人 . 并且积分转到包创建者roughike

    对于谷歌登录使用google_sign_in,这个包实际上非常成熟,更容易开始 .

  • 5

    截至2017年12月,有一个Facebook登录解决方案,还有一个用于Facebook登录Firebase以创建Facebook FirebaseUser . 最初的Facebook Connect登录包可以在@ https://pub.dartlang.org/packages/flutter_facebook_connect找到

    它需要以下webView包重定向到Facebook的SignIn Page @ https://pub.dartlang.org/packages/flutter_webview_plugin

    并且可以像这样实现自定义按钮......

    final _facebookConnect = new FacebookConnect(
              appId: '<APP_ID>',
              clientSecret: '<CLIENT_SECRET');
    
    FacebookOAuthToken token = await _facebookConnect.login();
    

    然后 token 可以像_3028154那样使用......

    await FirebaseAuth.instance.signInWithFacebook(accessToken: null);
    

    一些额外的步骤,但整体相当直接的执行 . 还有一个 Firebase_Connect 方法来实现FacebookLogin Button ...

    new FacebookLoginButton(
              appId: '<APP_ID>',
              clientSecret: '<CLIENT_SECRET>',
              scope: [FacebookAuthScope.publicProfile],
              onConnect: (api, token) {
               ...
              }),
    

    Google登录更加轻松 . 只需添加https://pub.dartlang.org/packages/google_sign_in中的Google_SignIn包,并将以下代码添加到自定义Flutter按钮...

    GoogleSignInAccount googleUser = await _googleSignIn.signIn();
          GoogleSignInAuthentication googleAuth = await googleUser.authentication;
          await FirebaseAuth.instance.signInWithGoogle(
              idToken: googleAuth.idToken, accessToken: googleAuth.accessToken);
    
  • 3

    我认为Flutter Dart中没有直接实现

    但也许可以通过使用本机实现并与Java / Swift代码进行通信 . 您可以构建UI并从flutter触发本机OAuth工作流 .

    https://github.com/flutter/flutter/tree/master/examples/hello_services

  • 2

    通过 google-sign-in 包存在Flutter的Google登录 . 查看Firebase for Flutter codelab了解更多信息 .

    AFAIK,还没有针对Flutter的Facebook登录包(尽管Dart中存在一个用于服务器端的包) . 写这样的包应该是一个有趣的练习......

相关问题