How to Authenticate with facebook and twitter to the firebase in flutter?

-2

I'm trying to authenticate with faceboook and twitter , & done with setUp part of facebook Developr console and implemented facebook login method to dart code but why there is occurring an error at facebookLogin.logInWithReadPermission. but I'm following the dart packages site facebook_sign_in Plugin

Code:


 Future<FirebaseUser> signInWithFacebook()async{
   FacebookLogin facebookLogin = new FacebookLogin();
   final FacebookLoginResult result = await facebookLogin.logInWithReadPermissions(['email']);
 }

enter image description here

Twitter auth method

Future<bool> signInWithTwitterAccount()async{
  setState(() {
     isLoading=true;
   });
    try{
    TwitterLogin twitterLogin = new TwitterLogin(
      consumerKey: consumerApiKey,
      consumerSecret: consumerSecretApiKey
    );
    TwitterLoginResult  _twitterLoginResult = await twitterLogin.authorize();
     TwitterSession _currentUserTwitterSession = _twitterLoginResult.session;
     AuthCredential authCredential = TwitterAuthProvider.getCredential(
        authToken: _currentUserTwitterSession.token,
        authTokenSecret: _currentUserTwitterSession.secret
     );
     AuthResult result = await auth.signInWithCredential(authCredential);
      if(result.user== null)
        return false;
      return true;
    }catch(error){
      Fluttertoast.showToast(msg: "Log in Error at :$error");
      return false;
    }
 }

Twitter SignIn Button:

Widget build(BuildContext context){
  return Scaffold(
    body: Center(
     child: FlatButton(
        child: Text(Login with Twitter),
         onPressed: () async{
           bool res= await signInWithGoogleAccount();
             if(!res)
              { setState(() {
                 isLoading=false;
                });
                Fluttertoast.showToast(msg: "Login failed");
              }else{  
              setState(() {
                isLoading=false;
              });
             Fluttertoast.showToast(msg: "Logged in successfully");
                            Navigator.of(context).pushReplacementNamed('/homepage');  
            }
         },
      )
    )
  );
}

Exception ,when clicked twitter sign in button:

E/Twitter ( 7270): Invalid json: <?xml version="1.0" encoding="UTF-8"?><errors><error code="415">Callback URL not approved for this client application. Approved callback URLs can be adjusted in your application settings</error></errors>
E/Twitter ( 7270): com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
E/Twitter ( 7270):      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:226)
E/Twitter ( 7270):      at com.twitter.sdk.android.core.models.SafeListAdapter$1.read(SafeListAdapter.java:45)
E/Twitter ( 7270):      at com.twitter.sdk.android.core.models.SafeMapAdapter$1.read(SafeMapAdapter.java:45)
E/Twitter ( 7270):      at com.google.gson.Gson.fromJson(Gson.java:927)
E/Twitter ( 7270):      at com.google.gson.Gson.fromJson(Gson.java:892)
E/Twitter ( 7270):      at com.google.gson.Gson.fromJson(Gson.java:841)
E/Twitter ( 7270):      at com.google.gson.Gson.fromJson(Gson.java:813)
E/Twitter ( 7270):      at com.twitter.sdk.android.core.TwitterApiException.parseApiError(TwitterApiException.java:110)
E/Twitter ( 7270):      at com.twitter.sdk.android.core.TwitterApiException.readApiError(TwitterApiException.java:95)
E/Twitter ( 7270):      at com.twitter.sdk.android.core.TwitterApiException.<init>(TwitterApiException.java:43)
E/Twitter ( 7270):      at com.twitter.sdk.android.core.Callback.onResponse(Callback.java:42)
E/Twitter ( 7270):      at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
E/Twitter ( 7270):      at android.os.Handler.handleCallback(Handler.java:794)
E/Twitter ( 7270):      at android.os.Handler.dispatchMessage(Handler.java:99)
E/Twitter ( 7270):      at android.os.Looper.loop(Looper.java:176)
E/Twitter ( 7270):      at android.app.ActivityThread.main(ActivityThread.java:6635)
E/Twitter ( 7270):      at java.lang.reflect.Method.invoke(Native Method)
E/Twitter ( 7270):      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
E/Twitter ( 7270):      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
E/Twitter ( 7270): Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
E/Twitter ( 7270):      at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:385)
E/Twitter ( 7270):      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:215)
E/Twitter ( 7270):      ... 18 more
E/Twitter ( 7270): Failed to get request token
E/Twitter ( 7270): com.twitter.sdk.android.core.TwitterApiException: HTTP request failed, Status: 403
E/Twitter ( 7270):      at com.twitter.sdk.android.core.Callback.onResponse(Callback.java:42)
E/Twitter ( 7270):      at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
E/Twitter ( 7270):      at android.os.Handler.handleCallback(Handler.java:794)
E/Twitter ( 7270):      at android.os.Handler.dispatchMessage(Handler.java:99)
E/Twitter ( 7270):      at android.os.Looper.loop(Looper.java:176)
E/Twitter ( 7270):      at android.app.ActivityThread.main(ActivityThread.java:6635)
E/Twitter ( 7270):      at java.lang.reflect.Method.invoke(Native Method)
E/Twitter ( 7270):      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
E/Twitter ( 7270):      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
I/zygote64( 7270): Do partial code cache collection, code=121KB, data=74KB
I/zygote64( 7270): After code cache collection, code=121KB, data=74KB
I/zygote64( 7270): Increasing code cache capacity to 512KB
E/Twitter ( 7270): Authorization completed with an error
E/Twitter ( 7270): com.twitter.sdk.android.core.TwitterAuthException: Failed to get request token
E/Twitter ( 7270):      at com.twitter.sdk.android.core.identity.OAuthController$1.failure(OAuthController.java:94)
E/Twitter ( 7270):      at com.twitter.sdk.android.core.internal.oauth.OAuth1aService$1.failure(OAuth1aService.java:191)
E/Twitter ( 7270):      at com.twitter.sdk.android.core.Callback.onResponse(Callback.java:42)
E/Twitter ( 7270):      at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
E/Twitter ( 7270):      at android.os.Handler.handleCallback(Handler.java:794)
E/Twitter ( 7270):      at android.os.Handler.dispatchMessage(Handler.java:99)
E/Twitter ( 7270):      at android.os.Looper.loop(Looper.java:176)
E/Twitter ( 7270):      at android.app.ActivityThread.main(ActivityThread.java:6635)
E/Twitter ( 7270):      at java.lang.reflect.Method.invoke(Native Method)
E/Twitter ( 7270):      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
E/Twitter ( 7270):      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
I/Toast   ( 7270): Show toast from OpPackageName:com.company_name.project, PackageName:com.company_name.project
E/SpannableStringBuilder( 7270): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
E/SpannableStringBuilder( 7270): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
W/ContentCatcher( 7270): Failed to notify a WebView
W/ResourceType( 7270): No package identifier when getting name for resource number 0x00000000

facebook
authentication
flutter
twitter
dart
asked on Stack Overflow Nov 26, 2019 by Shruti Ramnandan Sharma • edited Nov 26, 2019 by Shruti Ramnandan Sharma

1 Answer

1

Seems logInWithReadPermission method is not present in latest release. As seen in their repository: https://github.com/roughike/flutter_facebook_login/blob/master/lib/flutter_facebook_login.dart

You can try to login as shown in example code, which uses "logIn" function instead of logInWithPermission, check out repository example here

import 'dart:async';

import 'package:flutter_facebook_login/flutter_facebook_login.dart';
import 'package:flutter/material.dart';

void main() => runApp(new MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => new _MyAppState();
}

class _MyAppState extends State<MyApp> {
  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']);

    switch (result.status) {
      case FacebookLoginStatus.loggedIn:
        final FacebookAccessToken accessToken = result.accessToken;
        _showMessage('''
         Logged in!

         Token: ${accessToken.token}
         User id: ${accessToken.userId}
         Expires: ${accessToken.expires}
         Permissions: ${accessToken.permissions}
         Declined permissions: ${accessToken.declinedPermissions}
         ''');
        break;
      case FacebookLoginStatus.cancelledByUser:
        _showMessage('Login cancelled by the user.');
        break;
      case FacebookLoginStatus.error:
        _showMessage('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();
    _showMessage('Logged out.');
  }

  void _showMessage(String message) {
    setState(() {
      _message = message;
    });
  }

  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new Scaffold(
        appBar: new AppBar(
          title: new Text('Plugin example app'),
        ),
        body: new Center(
          child: new Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              new Text(_message),
              new RaisedButton(
                onPressed: _login,
                child: new Text('Log in'),
              ),
              new RaisedButton(
                onPressed: _logOut,
                child: new Text('Logout'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
answered on Stack Overflow Nov 26, 2019 by Ganapat

User contributions licensed under CC BY-SA 3.0