login with facebook
This commit is contained in:
127
lib/main.dart
127
lib/main.dart
@@ -5,17 +5,14 @@
|
||||
// ignore_for_file: public_member_api_docs
|
||||
|
||||
import 'dart:async';
|
||||
import 'dart:convert' show json;
|
||||
|
||||
import "package:http/http.dart" as http;
|
||||
import 'package:flutter_facebook_login/flutter_facebook_login.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:google_sign_in/google_sign_in.dart';
|
||||
|
||||
GoogleSignIn _googleSignIn = GoogleSignIn(
|
||||
scopes: <String>[
|
||||
'email',
|
||||
'https://www.googleapis.com/auth/contacts.readonly',
|
||||
],
|
||||
clientId: "1051330489903-on15f3rmq3a1830f2cb3d7ber0duueqh.apps.googleusercontent.com",
|
||||
//clientId: "1051330489903-on15f3rmq3a1830f2cb3d7ber0duueqh.apps.googleusercontent.com"
|
||||
);
|
||||
|
||||
void main() {
|
||||
@@ -43,6 +40,7 @@ class SignInDemoState extends State<SignInDemo> {
|
||||
setState(() {
|
||||
_currentUser = account;
|
||||
});
|
||||
|
||||
if (_currentUser != null) {
|
||||
_handleGetContact(_currentUser);
|
||||
}
|
||||
@@ -54,28 +52,30 @@ class SignInDemoState extends State<SignInDemo> {
|
||||
setState(() {
|
||||
_contactText = "Loading contact info...";
|
||||
});
|
||||
final http.Response response = await http.get(
|
||||
Uri.parse('https://people.googleapis.com/v1/people/me/connections'
|
||||
'?requestMask.includeField=person.names'),
|
||||
headers: await user.authHeaders,
|
||||
);
|
||||
if (response.statusCode != 200) {
|
||||
setState(() {
|
||||
_contactText = "People API gave a ${response.statusCode} "
|
||||
"response. Check logs for details.";
|
||||
});
|
||||
print('People API ${response.statusCode} response: ${response.body}');
|
||||
return;
|
||||
}
|
||||
final Map<String, dynamic> data = json.decode(response.body);
|
||||
final String namedContact = _pickFirstNamedContact(data);
|
||||
setState(() {
|
||||
if (namedContact != null) {
|
||||
_contactText = "I see you know $namedContact!";
|
||||
} else {
|
||||
_contactText = "No contacts to display.";
|
||||
}
|
||||
});
|
||||
// final http.Response response = await http.get(
|
||||
// Uri.parse('https://people.googleapis.com/v1/people/me/connections'
|
||||
// '?requestMask.includeField=person.names'),
|
||||
// headers: await user.authHeaders,
|
||||
// );
|
||||
// if (response.statusCode != 200) {
|
||||
// print("Success ------> 200");
|
||||
// setState(() {
|
||||
// _contactText = "People API gave a ${response.statusCode} "
|
||||
// "response. Check logs for details.";
|
||||
// });
|
||||
// print('People API ${response.statusCode} response: ${response.body}');
|
||||
// return;
|
||||
// }
|
||||
// final Map<String, dynamic> data = json.decode(response.body);
|
||||
// print("data $data");
|
||||
// final String namedContact = _pickFirstNamedContact(data);
|
||||
// setState(() {
|
||||
// if (namedContact != null) {
|
||||
// _contactText = "I see you know $namedContact!";
|
||||
// } else {
|
||||
// _contactText = "No contacts to display.";
|
||||
// }
|
||||
// });
|
||||
}
|
||||
|
||||
String _pickFirstNamedContact(Map<String, dynamic> data) {
|
||||
@@ -98,7 +98,9 @@ class SignInDemoState extends State<SignInDemo> {
|
||||
|
||||
Future<void> _handleSignIn() async {
|
||||
try {
|
||||
await _googleSignIn.signIn();
|
||||
await _googleSignIn.signIn().then((value){
|
||||
print(value);
|
||||
});
|
||||
} catch (error) {
|
||||
print(error);
|
||||
}
|
||||
@@ -145,6 +147,57 @@ class SignInDemoState extends State<SignInDemo> {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//shower message for facebook
|
||||
|
||||
static final FacebookLogin facebookSignIn = new FacebookLogin();
|
||||
String _message = 'Log in/out by pressing the buttons below.';
|
||||
|
||||
Future<Null> _login() async {
|
||||
final FacebookLoginResult result =
|
||||
await facebookSignIn.logIn(['email','public_profile']);
|
||||
|
||||
print(result.accessToken.token);
|
||||
switch (result.status) {
|
||||
case FacebookLoginStatus.loggedIn:
|
||||
final FacebookAccessToken accessToken = result.accessToken;
|
||||
_showMessages('''
|
||||
Logged in!
|
||||
|
||||
Token: ${accessToken.token}
|
||||
User id: ${accessToken.userId}
|
||||
Expires: ${accessToken.expires}
|
||||
Permissions: ${accessToken.permissions}
|
||||
Declined permissions: ${accessToken.declinedPermissions}
|
||||
''');
|
||||
break;
|
||||
case FacebookLoginStatus.cancelledByUser:
|
||||
_showMessages('Login cancelled by the user.');
|
||||
break;
|
||||
case FacebookLoginStatus.error:
|
||||
_showMessages('Something went wrong with the login process.\n'
|
||||
'Here\'s the error Facebook gave us: ${result.errorMessage}');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Future<Null> _logOut() async {
|
||||
await facebookSignIn.logOut();
|
||||
_showMessages('Logged out.');
|
||||
}
|
||||
|
||||
void _showMessages(String message) {
|
||||
setState(() {
|
||||
_message = message;
|
||||
});
|
||||
}
|
||||
|
||||
void _showMessage(String message) {
|
||||
setState(() {
|
||||
_message = message;
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
@@ -153,7 +206,21 @@ class SignInDemoState extends State<SignInDemo> {
|
||||
),
|
||||
body: ConstrainedBox(
|
||||
constraints: const BoxConstraints.expand(),
|
||||
child: _buildBody(),
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
_buildBody(),
|
||||
Text(_message),
|
||||
RaisedButton(
|
||||
onPressed: _login,
|
||||
child: Text('Log in'),
|
||||
),
|
||||
RaisedButton(
|
||||
onPressed: _logOut,
|
||||
child: new Text('Logout'),
|
||||
),
|
||||
],
|
||||
),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user