Я работаю над приложением flutter и хотел бы использовать facebook и google oauths для аутентификации моих пользователей. Вот код на стороне клиента, который отлично работает.
import 'package:flutter/material.dart';
import 'package:flutter_facebook_login/flutter_facebook_login.dart';
import 'package:http/http.dart' as http;
import 'dart:convert' as JSON;
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
bool isLoggedIn = false;
Map userProfile;
final facebookLogin = FacebookLogin();
_loginWithFB() async {
final result = await facebookLogin.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);
setState(() {
userProfile = profile;
isLoggedIn = true;
});
break;
case FacebookLoginStatus.cancelledByUser:
setState(() => isLoggedIn = false);
break;
case FacebookLoginStatus.error:
setState(() => isLoggedIn = false);
break;
}
}
_logoutWithFB() {
facebookLogin.logOut().then((value) => setState(() => isLoggedIn = false));
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: isLoggedIn
? Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Image.network(
"http://placehold.it/50x50",
height: 50.0,
width: 50.0,
),
SizedBox(
height: 50.0,
),
OutlineButton(
onPressed: _logoutWithFB,
child: Text('Logout'),
),
],
)
: OutlineButton(
onPressed: _loginWithFB,
child: Text('Facebook login'),
color: Colors.blueAccent,
),
),
);
}
}
Лог c, который я хочу использовать, предназначен для входа в систему, пользователь регистрируется с помощью facebook или google, я получаю базовый c info и попросите пользователя добавить дополнительную информацию на другом экране, затем при отправке информация о пользователе и токен отправляются на бэкэнд (это node.js api). \
На оборотной стороне I хотите проверить токен, полученный от внешнего интерфейса, с помощью facebook или google, и если идентификатор профиля соответствует полученному, информация о пользователе, полученная от внешнего интерфейса, сохраняется, тогда JWT будет создан и отправлен на внешний интерфейс.
Моя задача теперь состоит в том, как проверить токен oauth на стороне node.js.