From 7933898f5737ba9bd1707203c8ddea0bc567bed8 Mon Sep 17 00:00:00 2001 From: vibol Date: Wed, 10 Mar 2021 18:10:16 +0700 Subject: [PATCH] login with facebook --- ...ber0duueqh.apps.googleusercontent.com.json | 1 + android/app/src/main/AndroidManifest.xml | 21 +++ android/app/src/main/res/values/styles.xml | 11 ++ ios/Runner/Info.plist | 43 +++++- keyTool/keytool.jks | Bin 0 -> 2068 bytes lib/main.dart | 127 +++++++++++++----- pubspec.lock | 7 + pubspec.yaml | 1 + 8 files changed, 178 insertions(+), 33 deletions(-) create mode 100644 android/app/client_secret_1051330489903-on15f3rmq3a1830f2cb3d7ber0duueqh.apps.googleusercontent.com.json create mode 100644 keyTool/keytool.jks diff --git a/android/app/client_secret_1051330489903-on15f3rmq3a1830f2cb3d7ber0duueqh.apps.googleusercontent.com.json b/android/app/client_secret_1051330489903-on15f3rmq3a1830f2cb3d7ber0duueqh.apps.googleusercontent.com.json new file mode 100644 index 0000000..b945d26 --- /dev/null +++ b/android/app/client_secret_1051330489903-on15f3rmq3a1830f2cb3d7ber0duueqh.apps.googleusercontent.com.json @@ -0,0 +1 @@ +{"installed":{"client_id":"1051330489903-on15f3rmq3a1830f2cb3d7ber0duueqh.apps.googleusercontent.com","project_id":"deductive-tree-303007","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]}} \ No newline at end of file diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 8aefd3c..03d1ba3 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -33,6 +33,7 @@ android:name="io.flutter.embedding.android.SplashScreenDrawable" android:resource="@drawable/launch_background" /> + @@ -43,5 +44,25 @@ + + + + + + + + + + + + + + diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml index 1f83a33..2224def 100644 --- a/android/app/src/main/res/values/styles.xml +++ b/android/app/src/main/res/values/styles.xml @@ -15,4 +15,15 @@ + + Your App Name here. + + + 2553407474960753 + + + fb2553407474960753 diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 4c7499e..88aa684 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -42,6 +42,7 @@ UIViewControllerBasedStatusBarAppearance + CFBundleURLTypes @@ -50,13 +51,49 @@ Editor CFBundleURLSchemes - - - com.googleusercontent.apps.184261582386-t5mokji6qo3l77kf3m269onvelou1114 + 1051330489903-on15f3rmq3a1830f2cb3d7ber0duueqh.apps.googleusercontent.com + + CFBundleURLTypes + + + + CFBundleURLSchemes + + + fb2553407474960753 + + + + + FacebookAppID + + + 2553407474960753 + FacebookDisplayName + + + YOUR_APP_NAME + + LSApplicationQueriesSchemes + + fbapi + fb-messenger-share-api + fbauth2 + fbshareextension + + + diff --git a/keyTool/keytool.jks b/keyTool/keytool.jks new file mode 100644 index 0000000000000000000000000000000000000000..33a2c94b5292906ad3458c364d17704bc2f4aaab GIT binary patch literal 2068 zcmV+v2r>ctmDf|&@&vwzYhvmI+m8-bV>npnfoH<-tnF2c*)KTzu8fR!8h zGHO0MFp@c*c_OdC+RbYMG!Td;&;$H| zO-mcgkV*795+=q~^93AJ6HN0sj@Ra=7 zADt`NWDOx7{oN=(p^E+e^>)FaP^SXRhWXMS{7j+4nZtpXbhA-ATXNj;6F}U4YBF0w zXNYL4B#%vo{a{-NR<}-+C)QEqd)WnprJmwX z5^xu9!#d1vn&@$1sj0U+&at(VPJzRmFd$f#S(G+PjuZ&-Rdw$B(Ql;h7LlAXh21j1T_&4+%1M#a6+LfhJ~|DnF9cJS8xn)FwRwWhk~< zc15M|Hb;@jTD+H~=D;*TQ1m)zG3o@tWtSojp}Uq;I*(Cjoo4=x91!YfVjyR1FO&B7 z%%}D~-swZGpI6YQ5QW<55CNHF7J5ZhhepPcXevWPFeJICl|v|3VBi%1A;^_W?a!(# z|K6@U@hVe_Waox^8TC9?L2oQ$2IUXr8ha?fJ(qg50n5wxX)21i=+v<0^$WUKN<O#VUOoic`Yi2;p*&QH&@vkT2Y~Nx8}+t{k1x%2G^1vlH2CR z00fx4{W87$pUz^VZQI%9R~&uzU9MX-G{S(MU%pl29{eC1pp<@Md$!X5^DQyb`Zc;A3km_ukI6hljc#cz>m<* zuDkSKYbnA72F-iFJ`3oFHLm!x1C>RXMUs5N;cXECtd$%*3ucHr(Kez(c@qQ|QXcH+ zFL@=Ck7?ME*8O~8Xl1|S9(fTb$ewJ?4>r{P!uzlkKMu*g#008mpbBD0z&{8_MGEZc ztwCv-*6L&GhZ^{&SDv~w|IWv%;U#+Ip>0K7gC#D!k?6!cvlQy?ei~cmp1EX4Q(ac} zu8wdHTsGahg+`66beeL`M0)4-t-w1n674PyHC40MjL9oow=(0x-4Ww29$HGJbD~Z0 zRw`Qg=dah9T>}Vq!p*ry|HOHT*(_Y>zty~Q%7-C=f7`g$P8@71K%#8e)U%AsjWXt=U=M#R_Yw?Z%soyba;rK!4UKCv?W zWK^bGPwbz>Wg;(sm2L(%w+(nPO()2f6X-B*?D6q2IEs7=et7~=I@2BR^NI5ZA8f5j z;=SrM*Xs0dn+$U2B|=N&lqVA?3`VQ~000311z0XMFgXAK0?jaj0?9Cf0kNP10s#U7 z1VNCNIxr0e2`Yw2hW8Bt0Sg5HFcmQqFcAg=RRjYQ3U+B?Z)|RFVlgr>9v2NVF)%YR zFfcbVGB7k+7Y#HvFf%YTFgG$XFf>{)6)_Vq5e5TQ1OpQac4=a7Y;JF2F)}cM0U|IB z1_>&LNQUypyl6IO)(+X@^#T;9{R6~TDB z$F#vX0RMg)M(oGqrYGRz6dj*%^}+g3K?FJX{l9XCUZdd%ah97UTwi%+AxeAX9xE#>YDL~%3x`bbL y?CsdM&P0nhXTwKXn*ul^nY*Z2H*jZ678EUjHI;uw&EN@ulj8X>;$2MySn5fPShh6) literal 0 HcmV?d00001 diff --git a/lib/main.dart b/lib/main.dart index dd912c5..0c2e9d3 100644 --- a/lib/main.dart +++ b/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: [ - '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 { setState(() { _currentUser = account; }); + if (_currentUser != null) { _handleGetContact(_currentUser); } @@ -54,28 +52,30 @@ class SignInDemoState extends State { 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 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 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 data) { @@ -98,7 +98,9 @@ class SignInDemoState extends State { Future _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 { } } + + //shower message for facebook + + static final FacebookLogin facebookSignIn = new FacebookLogin(); + String _message = 'Log in/out by pressing the buttons below.'; + + Future _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 _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 { ), body: ConstrainedBox( constraints: const BoxConstraints.expand(), - child: _buildBody(), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + _buildBody(), + Text(_message), + RaisedButton( + onPressed: _login, + child: Text('Log in'), + ), + RaisedButton( + onPressed: _logOut, + child: new Text('Logout'), + ), + ], + ), )); } } diff --git a/pubspec.lock b/pubspec.lock index 7a3d17a..e37b0c7 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -62,6 +62,13 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_facebook_login: + dependency: "direct main" + description: + name: flutter_facebook_login + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.0" flutter_test: dependency: "direct dev" description: flutter diff --git a/pubspec.yaml b/pubspec.yaml index 8e13d74..5e69046 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -25,6 +25,7 @@ dependencies: sdk: flutter google_sign_in: http: + flutter_facebook_login: # The following adds the Cupertino Icons font to your application.