Подтвердить что ты не робот

Google, Facebook Войти с поддержкой Flutter

Я новичок в Flutter, есть ли способ, которым я могу предоставить Sign, используя GOOGLE/FACEBOOK с Flutter.

Спасибо

4b9b3361

Ответ 1

Добавление этого позднего ответа, поскольку теперь есть пакет flutter_facebook_login который заменяет flutter_facebook_connect. Вот действующий пример main.dart который должен работать. Просто имейте в виду, что вы должны выполнить все настройки, как описано в репозитории, и должны иметь настроенное приложение 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

Это способ пойти прямо сейчас, поскольку пакет на самом деле использует родные SDK для входа в Facebook на Android и iOS. Так что нет оправдания использованию Firebase или необходимости взаимодействовать с самим собой!

Надеюсь, что это поможет другим, кто испытывает проблемы с входом в Facebook. И кредиты идут к создателю пакета грубая

Для входа в Google используйте google_sign_in, этот пакет на самом деле достаточно зрелый и его легче начать.

Ответ 2

По состоянию на декабрь 2017 года существует решение для входа в Facebook, а также 1 для входа в Facebook с Firebase для создания FirebaseUser для Facebook. Исходный пакет подключения Facebook Connect можно найти @https://pub.dartlang.org/packages/flutter_facebook_connect

Для этого требуется следующий пакет webView, который перенаправляется на страницу входа в систему Facebook @https://pub.dartlang.org/packages/flutter_webview_plugin

И пользовательская кнопка может быть реализована так...

final _facebookConnect = new FacebookConnect(
          appId: '<APP_ID>',
          clientSecret: '<CLIENT_SECRET');

FacebookOAuthToken token = await _facebookConnect.login();

Затем token можно использовать с FirebaseAuth так...

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

Несколько дополнительных шагов, но в целом довольно прямое выполнение. Также существует способ Firebase_Connect для реализации кнопки FacebookLogin...

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

Google Sign In еще проще. Просто добавьте пакет Google_SignIn из https://pub.dartlang.org/packages/google_sign_in и добавьте следующий код к своей пользовательской кнопке 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. Вы можете создавать свой пользовательский интерфейс и запускать собственный рабочий процесс OAuth из флаттера.

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

Ответ 4

Вход в Google для Flutter осуществляется через пакет google-sign-in. Ознакомьтесь с Firebase for Flutter для дополнительной информации.

AFAIK, пока еще нет подписного пакета Facebook для Flutter (хотя он существует в Dart для серверной части). Написание такого пакета должно быть интересным упражнением...