Giter Club home page Giter Club logo

autologin_plugin's People

Contributors

dependabot[bot] avatar patricknicolosi avatar rekire avatar simonit avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

autologin_plugin's Issues

MissingPluginException on iOS

MissingPluginException: MissingPluginException(No implementation found for method disableAutoLogIn on channel autologin_plugin)
  File "platform_channel.dart", line 165, in MethodChannel._invokeMethod
  File "<asynchronous suspension>"
  File "autologin_plugin.dart", line 31, in AutologinPlugin.disableAutoLogIn
  File "<asynchronous suspension>"
  File "future.dart", in Future.wait.<fn>

Don't use exceptions

In my opinion, using exceptions for saying that the user has no saved credentials is pretty bad design. It's common to use null for this case. This won't let my error reporting tool freak out.

Another idea is a isSupported method to prevent an exception raised because of a not existing Google API. This would also be very helpful with different platforms.

Linux Support

I think the best way to integrate is to use libsecret. KDE and GNOME seem to use it.
flutter_secure_storage seems to use it too.

Plugin lets app crash

I don't know the reason for the crash, but it crashed multiple times by clicking on the button for not selecting an email address from the list and once after clicking on the save button I added in #1.

E/AndroidRuntime( 8501): FATAL EXCEPTION: main
E/AndroidRuntime( 8501): Process: de.wbtsolutions.openproject_app, PID: 8501
E/AndroidRuntime( 8501): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=48233, result=-1, data=null} to activity {de.wbtsolutions.openproject_app/de.wbtsolutions.openproject_app.MainActivity}: java.util.ConcurrentModificationException
E/AndroidRuntime( 8501): 	at android.app.ActivityThread.deliverResults(ActivityThread.java:4845)
E/AndroidRuntime( 8501): 	at android.app.ActivityThread.handleSendResult(ActivityThread.java:4886)
E/AndroidRuntime( 8501): 	at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
E/AndroidRuntime( 8501): 	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
E/AndroidRuntime( 8501): 	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
E/AndroidRuntime( 8501): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
E/AndroidRuntime( 8501): 	at android.os.Handler.dispatchMessage(Handler.java:107)
E/AndroidRuntime( 8501): 	at android.os.Looper.loop(Looper.java:214)
E/AndroidRuntime( 8501): 	at android.app.ActivityThread.main(ActivityThread.java:7356)
E/AndroidRuntime( 8501): 	at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime( 8501): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
E/AndroidRuntime( 8501): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
E/AndroidRuntime( 8501): Caused by: java.util.ConcurrentModificationException
E/AndroidRuntime( 8501): 	at java.util.HashMap$HashIterator.nextNode(HashMap.java:1441)
E/AndroidRuntime( 8501): 	at java.util.HashMap$KeyIterator.next(HashMap.java:1465)
E/AndroidRuntime( 8501): 	at io.flutter.embedding.engine.FlutterEnginePluginRegistry$FlutterEngineActivityPluginBinding.onActivityResult(FlutterEnginePluginRegistry.java:689)
E/AndroidRuntime( 8501): 	at io.flutter.embedding.engine.FlutterEnginePluginRegistry.onActivityResult(FlutterEnginePluginRegistry.java:378)
E/AndroidRuntime( 8501): 	at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onActivityResult(FlutterActivityAndFragmentDelegate.java:597)
E/AndroidRuntime( 8501): 	at io.flutter.embedding.android.FlutterFragment.onActivityResult(FlutterFragment.java:699)
E/AndroidRuntime( 8501): 	at io.flutter.embedding.android.FlutterFragmentActivity.onActivityResult(FlutterFragmentActivity.java:510)
E/AndroidRuntime( 8501): 	at android.app.Activity.dispatchActivityResult(Activity.java:8110)
E/AndroidRuntime( 8501): 	at android.app.ActivityThread.deliverResults(ActivityThread.java:4838)
E/AndroidRuntime( 8501): 	... 11 more
I/Process ( 8501): Sending signal. PID: 8501 SIG: 9

Possibility to set under which account credentials are saved

If I'm signed in with multiple Google accounts on my device I would like to have the possibility to save for example my works login under the works account and my private ones under my private account.

Referring to this https://developers.google.com/android/reference/com/google/android/gms/auth/api/credentials/package-summary, there seem to be setAccountName for archiving this. There would be also a method needed to get all available accounts to let the user choose the preferred one

Roadmap for 1.0.0

For the best login experience it should be as simple as possible to get the user signed in (again) and in best case with zero touch.

Faster logins

Should allow using login data from other devices or the browser. On Android OneTap or the CredeitialManager API #20 the should be used. For iOS I plan to use shared web credentials as mentioned in #11. Both APIs should provide a simple way to access the credentials. On the other hand both APIs have a hard requirement to prove the connection between the APP and the website. On Android assetlinks are required while for Apple associated Domains are required. The documentation need to explain the steps which are required for this.

Zero touch

Should allow the user to fetch some session data to recover the account. For Android I want to use BlockStore. On iOS I want simply to read out the keychain might be with secure storage which is already syncing their data with the keychain.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.