Я новичок в Flutter, есть ли способ, которым я могу предоставить Sign, используя GOOGLE/FACEBOOK с Flutter.
Спасибо
Я новичок в Flutter, есть ли способ, которым я могу предоставить Sign, используя GOOGLE/FACEBOOK с Flutter.
Спасибо
Добавление этого позднего ответа, поскольку теперь есть пакет 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),
),
);
}
}
Вы должны увидеть экран входа в систему, нажав нижнюю правую кнопку, и проверить напечатанный ответ на консоли отладки:
Это способ пойти прямо сейчас, поскольку пакет на самом деле использует родные SDK для входа в Facebook на Android и iOS. Так что нет оправдания использованию Firebase или необходимости взаимодействовать с самим собой!
Надеюсь, что это поможет другим, кто испытывает проблемы с входом в Facebook. И кредиты идут к создателю пакета грубая
Для входа в Google используйте google_sign_in, этот пакет на самом деле достаточно зрелый и его легче начать.
По состоянию на декабрь 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);
Я не думаю, что есть реализация непосредственно в Flutter Dart
Но возможно, используя встроенную реализацию и связываясь с кодом Java/Swift. Вы можете создавать свой пользовательский интерфейс и запускать собственный рабочий процесс OAuth из флаттера.
https://github.com/flutter/flutter/tree/master/examples/hello_services
Вход в Google для Flutter осуществляется через пакет google-sign-in
. Ознакомьтесь с Firebase for Flutter для дополнительной информации.
AFAIK, пока еще нет подписного пакета Facebook для Flutter (хотя он существует в Dart для серверной части). Написание такого пакета должно быть интересным упражнением...
Пошаговое объяснение для входа в Google и Facebook в флаттер.
Google Login: Google Войти в флаттер
Facebook Войти: Facebook Войти в флаттер