jamie-mh / authenticatorpro Goto Github PK
View Code? Open in Web Editor NEW📱 Two-Factor Authentication (2FA) client for Android + Wear OS
Home Page: https://authenticatorpro.jmh.me
License: GNU General Public License v3.0
📱 Two-Factor Authentication (2FA) client for Android + Wear OS
Home Page: https://authenticatorpro.jmh.me
License: GNU General Public License v3.0
Let me start by saying I am very grateful that you have provided Wear OS compatibility. Having 2FA on my wrist was the primary reason I bought a smartwatch, and I bought it just in time for Google Authenticator to drop support.
The issue I'm having is the app works fine for awhile on Wear OS, then after some time when I select a different login, the generated code does not work. A reboot of the watch seems to resolve the issue, temporarily. After the second time today, I opened the app on my phone and compared to the watch and noticed the generated code was actually for a different login, the login I had used earlier in the day. After some more fiddling I found that when I select an account on the watch it does show the correct code for a split second, then shows the incorrect code again. I realize that is probably clear as mud, but I'm not sure how else to explain the issue.
An example scenario:
I have 10 logins loaded into the app.
At 1:00pm I select login 2, it generates a working code.
At 3:30pm I select login 1, for a split second it shows a working code, then immediately starts showing the code for login 2.
Selecting any of my other logins (3 through 10), also show a correct code for a split second, then immediately shows the code for login 2.
Selecting login 2 shows a working code.
The logo and login names are always correct regardless of what I select, just the generated code is incorrect.
I am not a developer, but I don't feel like it's a functionality issue, just maybe a display issue.
Worth noting that the app on my phone is working flawlessly.
The app was downloaded and installed from the Google Play Store.
Watch details:
Fossil Sport 1033
Wear OS 2.17
Phone details:
Samsung Galaxy S7 SM-G930V
Android version 8.0.0
Thanks!
Google Authenticator allows users to copy a code by long pressing it, in addition to rearranging that code. As these codes are only valid for such a short period of time, I don't see this as a major security concern (and, clearly, neither does Google). Would it be possible to implement such a feature to AuthenticatorPro in a non-intrusive and hopefully not-a-ton-of-work way? Thanks.
Would it be possible to add the option to add custom .ico files. Would come in handy with things like 2fa on custom amp instances. Along with other more niche websites that have 2fa
When creating a backup, the only options that show up are the Downloads folder, my SD card, and two Google Drive accounts (I have two Google accounts on this phone). However when restoring a backup, I also get the option to select OneDrive.
Whilst backing up to Google Drive is acceptable, and of course I can manually copy the file to OneDrive, I'd much prefer to backup to OneDrive directly if possible
When backing up the database encrypted, the password prompt doesn't show an option to view the password, which can in case of long and complex passwords lead to un-restorable databases (speaking from experience).
Scenario: You backup your database with a (longer) password, but accidentally miss a symbol. When trying to restore the database, the app says the password is either incorrect or the file is corrupted - you just lost your passwords.
In my case I have multiple backups from multiple apps which saved me from quite some trouble, but I think an option to see the password (the little eye icon) before backing up the file to check if it's correct would benefit a lot of users.
Hello,
Is it possible to have the companion app generate codes while offline?
I was used to have that functionality in my pebble. And solves some issues when your phone is drained. I really enjoy using the application and I think this functionality could make it closer to perfection.
Thank you very much for all your work and allowing us to work with your app.
Best regards.
Could it be you accidentally introduced a zero too much into the latest release's versionCode? At least the armeabi identifies as
package: name='me.jmh.authenticatorpro' versionCode='210000040' versionName='1.9.1.1' compileSdkVersion='29' compileSdkVersionCodename='10'
which is one digit more than in previous versions, and not matching what fastlane's changelogs have (again a zero too much).
Question now is, will you continue from there? Otherwise all those having updated to this version won't get future versions offered as update. Or do you want to risk a "quick replace", before too many people updated? Then please let me know soon so I can replace the APK in my repo as well.
Hello,
Sorry, I'am unable to put this request into "Pull requests".
Can you add icons for theses Websites/services on the next release please ?
Thank you so much.
Alex.
Would you be able to add icons for the following services:
Thanks
When you leave the app and go back to the main watch face and then access the AuthenticatorPro app again you just get a blue bar scrolling on the display.
Does the watch work in stand alone mode or does it check with the app on the phone each time it loads?
Please, add support to import my backup file from others apps like andOTP and Aegis.
I'm currently using Aegis.
I want to know if there is any way to recover my tokens using the backup file created by the app or in general any other way?
Your app doesn't ask for the "Storage" permission. How is it able to write the backup file to my storage then?
It would be great if you could integrate some generic icons like in KeePass database. You don't have to search which ones to integrate. Just copy the KeePass list. It's very complete and adaptable
There are some UI suggestions I have to make. Since I can't take screenshots in the app, I'll try to explain in words.
Make the top bar of the app static which displays the current category being shown. It solves two problems at once and improves the usability.
First, when I scroll down to see all the tokens, the tokens go up and slide down under my status bar which is translucent. The content of the app and the status bar collides (one is on top of the other) which isn't very aesthetically pleasing.
Second, if the top bar is static, the users would know, at all times, which category is being displayed. This isn't a big issue for me as I normally don't need to know this information but I assume someone with a large number of tokens might. Even if you don't make the top bar static, at least make it so that app content doesn't go under the phone's status bar.
My preferred solution is to hide the status bar as soon as the app open if that is possible.
Another aesthetic suggestion would be to make the timer animation continuous rather than ticking. It feels less burdened and greatly improves the seamlessness. You can also offer an option for a round timer on the right hand side of each token kind of like Google Authenticator. Also since the timer is synced for each entry, why not make a universal timer which stays static on top?
Any love for a grid view? (See Twilio Authy)
Finally, here are two icon requests. I'd be grateful.
Great work!
P.S.: This is my first time writing something on GitHub.
Hi thanks for a great app, does anyone know if there's any way to use Authenticator Pro to generate codes for Blizzard / Battlenet? I don't want to use their app just for this.
I wasn't able to figure out if it is possible or not, but it seems that some sort of Serial key needs to be generated in the auth app. I found some info at this link which shows how other third party auth apps can be used for generating TOTP codes https://kangaroobyte.com/blizzard-authenticator-using-andotp-freeotp-and-other-totp-apps-20200403-227/
I exported the database and when I try to import it through Authenticator Pro I get an error saying that either the password is incorrect or the db is corrupt. I tried several times and I'm sure that both the password is correct and the db is not corrupt.
Am I missing something?
Hi,
I'd suggest enabling the GitHub wiki. Documentation, FAQs and contribution guide could be moved over there to make the README.md and the overall structure cleaner.
Hello,
I've noticed that the icons dont quite match eatch other.
Most icons have got no frame, tough some icons, e.g. Nextcloud, Snapchat and Nintendo got one.
I'd recommend adding rounded corners, some icons (e.g. Nintendo, Nexcloud) have got to many details, I'd replace them completely. (Even on my Galaxy A71 they dont quite look good)
If someone agrees with me.... I could "do the work".
Have a great day.
Let us scan the QR code the Google authenticator app shows when you click on the "export" option to transfer your authenticator info to this app. I use google authenticator and I wanna switch to this new all but I dont wanna have to go through every single account's setting and set everything up again.
Hi~
There is a bug that scans for invalid keys and dies.
ex) ZIG54ATT5THSXFO0000
It continues to die until you use the Data Delete menu.
The only thing that's categorized in Android is this.
Please fix it.
Thank you.
I'm currently preparing to add most of the missing icons that are listed on twofactorauth.org but wanted to check for some input if this is a good idea, from a project point-of-view.
Most of these services are not that commonly used (or so I believe), so adding hundreds of new icons would have little benefit for 90% of all users. Is it better to wait for a User to ask for a missing icon?
Looking forward to some input
I've been migrating all my two factor authentication codes from Protectimus to Authenticator Pro because it's far superior and has a backup feature which I think is crucial. I added a few sites weeks ago and today when I tried to add two more sites (Epic Games Store and GitHub) it doesn't work. This is what happens:
Entering the information manually works but of course it's more tedious than scanning the QR code. It did work fine a month ago (I've just checked and my last backup is from July, 13th and I've also noticed that there was a new version released on August, 14th).
I'm using latest version from Google Play Store (1.9.2) and my phone is a Xiaomi Mi 9T Pro.
By the way, I also wish to take this opportunity to thank you for developing this app!
Hi,
I guess you are already aware of this topic but it seems several authenticator apps a open to a screenshot based attack. So it might be good to disable screenshots (or better make it a config option).
https://www.techradar.com/nz/news/google-2fa-authentication-could-be-less-secure-than-thought
Please add Drupal and Mailgun icons
https://www.drupal.org/about/media-kit/logos
https://www.mailgun.com/
Having searched off and on for some time now for an alternative to Authenticator+, a terrific 2FA app, but pretty much abandonware at this point (last update Dec 2018 and no responses to inquires), I finally came upon AuthenticatorPro today, having tried several others at the same time - Aegis, 2FA authenticator, Microsoft's stab at it etc. - none of which made the cut.
It's darned near finally a perfect replacement for me. Except for one thing - and that one thing that's lacking is precisely what made it easy to switch from Auth+ to AuthPro: backup/export that includes an html output file with QR codes for each of the credentials, see attached:
Any chance of that being implemented? It makes migration a breeze.
Thanks in advance!
On a round watch, the list scrolls in a weird triangular way, with an abrupt change of direction in the center. Could this be changed to match the way the home screen’s app list scrolls, which is more circular?
@jamie-mh Any objections to an F-Droid RFP?
Ping @IzzySoft re: any showstoppers?
Hello,
nice app! Would you consider adding an option to use regular data storage inside /data? The reason is that the secure storage method makes backups impossible from outside the app. Yes, the app itself has a backup option, but that can't be automated like the general device-wide backup I am running. A good backup is a frequent backup, and having to manually interact for each backup is not an option.
Thanks!
Great app!
Would you consider adding the icons for:
Bitwarden; https://play.google.com/store/apps/details?id=com.x8bit.bitwarden
Tutanota; https://play.google.com/store/apps/details?id=de.tutao.tutanota
Samsung (do I need to introduce this one?)
Icons rather than just names are a decent idea BTW, makes it a lot easier to find what I'm looking for.
Could the app add an automatic sync/backup function?
This way users don't have to worry about forgetting to back up the secret.
Thank you.
Some services/companies rely on special characters.
The README states with spaces and special characters removed.
which can result in ambiguous naming down the line
Examples would be:
What is the correct way to distinguish these services and their related icons?
namecom
or name
or namedotcom
gmxnet
or gmx
or gmxdotnet
mailde
, maildotde
yahoojp
Good evening,
First sorry to not put this request in "Pull requests" but I really dont know how to do that !
New icons :
Can you add theses icons please:
Version Number:
Is it possible to add somewhere in the software (example in the bottom of the menu), the apps version number?
That can be interessing to know if this is the latest version or not.
Search Option:
Can you please add the possibilite to search in the username ? Actually, the search in only working for the Emitter and not the Username. A dropdown option in the menu with "Search in :" and "Emitter/Issuer" or "Emitter/Issuer & Username" can be an idea.
I've a lot of OTP from customer and I put the description of the service in the Issuer. So I have for example 15 Instagram with the same name but the only difference is the username. I wish to have the possiblitie to search in it.
Misc:
Can you add a "ghost" categorie to sort all uncategorized/non categoried. I've more than 60 OTP and some are not categorized and I dont want to open them one by one to correct that.
Thank for everythink in all of case! Love to use this apps daily.
Alex.
09-27 09:52:40.688 7114 7114 I MonoDroid: UNHANDLED EXCEPTION:
09-27 09:52:41.205 7114 7114 I MonoDroid: Android.Gms.Common.Apis.ApiException: 4000: TARGET_NODE_NOT_CONNECTED
09-27 09:52:41.205 7114 7114 I MonoDroid: at AuthenticatorPro.WearOS.Activity.MainActivity.Refresh () [0x000b6] in <a6a47d639c2c4c28a29bfc4a049dbc50>:0
09-27 09:52:41.205 7114 7114 I MonoDroid: at AuthenticatorPro.WearOS.Activity.MainActivity.OnCreate (Android.OS.Bundle bundle) [0x0039e] in <a6a47d639c2c4c28a29bfc4a049dbc50>:0
09-27 09:52:41.205 7114 7114 I MonoDroid: at System.Runtime.CompilerServices.AsyncMethodBuilderCore+<>c.<ThrowAsync>b__7_0 (System.Object state) [0x00000] in <5e5e1d94f16a41abbcb4038adc765ccd>:0
09-27 09:52:41.205 7114 7114 I MonoDroid: at Android.App.SyncContext+<>c__DisplayClass2_0.<Post>b__0 () [0x00000] in <b0945a35bf934a47bf1779cc47fc7a0b>:0
09-27 09:52:41.205 7114 7114 I MonoDroid: at Java.Lang.Thread+RunnableImplementor.Run () [0x00008] in <b0945a35bf934a47bf1779cc47fc7a0b>:0
09-27 09:52:41.205 7114 7114 I MonoDroid: at Java.Lang.IRunnableInvoker.n_Run (System.IntPtr jnienv, System.IntPtr native__this) [0x00008] in <b0945a35bf934a47bf1779cc47fc7a0b>:0
09-27 09:52:41.206 7114 7114 I MonoDroid: at (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.8(intptr,intptr)
09-27 09:52:41.206 7114 7114 I MonoDroid: --- End of managed Android.Gms.Common.Apis.ApiException stack trace ---
09-27 09:52:41.206 7114 7114 I MonoDroid: com.google.android.gms.common.api.ApiException: 4000: TARGET_NODE_NOT_CONNECTED
09-27 09:52:41.206 7114 7114 I MonoDroid: at com.google.android.gms.common.internal.ApiExceptionUtil.fromStatus(Unknown Source:14)
09-27 09:52:41.206 7114 7114 I MonoDroid: at com.google.android.gms.common.internal.zai.zaf(Unknown Source:0)
09-27 09:52:41.206 7114 7114 I MonoDroid: at com.google.android.gms.common.internal.zaj.onComplete(Unknown Source:32)
09-27 09:52:41.206 7114 7114 I MonoDroid: at com.google.android.gms.common.api.internal.BasePendingResult.zaa(Unknown Source:79)
09-27 09:52:41.206 7114 7114 I MonoDroid: at com.google.android.gms.common.api.internal.BasePendingResult.setResult(Unknown Source:41)
09-27 09:52:41.206 7114 7114 I MonoDroid: at com.google.android.gms.common.api.internal.BaseImplementation$ApiMethodImpl.setResult(Unknown Source:2)
09-27 09:52:41.206 7114 7114 I MonoDroid: at com.google.android.gms.wearable.internal.zzgm.zza(Unknown Source:4)
09-27 09:52:41.206 7114 7114 I MonoDroid: at com.google.android.gms.wearable.internal.zzhe.zza(Unknown Source:13)
09-27 09:52:41.206 7114 7114 I MonoDroid: at com.google.android.gms.wearable.internal.zzel.dispatchTransaction(Unknown Source:265)
09-27 09:52:41.206 7114 7114 I MonoDroid: at com.google.android.gms.internal.wearable.zzb.onTransact(Unknown Source:22)
09-27 09:52:41.206 7114 7114 I MonoDroid: at android.os.Binder.execTransact(Binder.java:731)
09-27 09:52:41.206 7114 7114 I MonoDroid:
09-27 09:52:41.258 7114 7114 D AndroidRuntime: Shutting down VM
09-27 09:52:41.284 7114 7114 E AndroidRuntime: FATAL EXCEPTION: main
09-27 09:52:41.284 7114 7114 E AndroidRuntime: Process: me.jmh.authenticatorpro, PID: 7114
09-27 09:52:41.284 7114 7114 E AndroidRuntime: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
09-27 09:52:41.284 7114 7114 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:503)
09-27 09:52:41.284 7114 7114 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
09-27 09:52:41.284 7114 7114 E AndroidRuntime: Caused by: java.lang.reflect.InvocationTargetException
09-27 09:52:41.284 7114 7114 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
09-27 09:52:41.284 7114 7114 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
09-27 09:52:41.284 7114 7114 E AndroidRuntime: ... 1 more
09-27 09:52:41.284 7114 7114 E AndroidRuntime: Caused by: com.google.android.gms.common.api.ApiException: 4000: TARGET_NODE_NOT_CONNECTED
09-27 09:52:41.284 7114 7114 E AndroidRuntime: at com.google.android.gms.common.internal.ApiExceptionUtil.fromStatus(Unknown Source:14)
09-27 09:52:41.284 7114 7114 E AndroidRuntime: at com.google.android.gms.common.internal.zai.zaf(Unknown Source:0)
09-27 09:52:41.284 7114 7114 E AndroidRuntime: at com.google.android.gms.common.internal.zaj.onComplete(Unknown Source:32)
09-27 09:52:41.284 7114 7114 E AndroidRuntime: at com.google.android.gms.common.api.internal.BasePendingResult.zaa(Unknown Source:79)
09-27 09:52:41.284 7114 7114 E AndroidRuntime: at com.google.android.gms.common.api.internal.BasePendingResult.setResult(Unknown Source:41)
09-27 09:52:41.284 7114 7114 E AndroidRuntime: at com.google.android.gms.common.api.internal.BaseImplementation$ApiMethodImpl.setResult(Unknown Source:2)
09-27 09:52:41.284 7114 7114 E AndroidRuntime: at com.google.android.gms.wearable.internal.zzgm.zza(Unknown Source:4)
09-27 09:52:41.284 7114 7114 E AndroidRuntime: at com.google.android.gms.wearable.internal.zzhe.zza(Unknown Source:13)
09-27 09:52:41.284 7114 7114 E AndroidRuntime: at com.google.android.gms.wearable.internal.zzel.dispatchTransaction(Unknown Source:265)
09-27 09:52:41.284 7114 7114 E AndroidRuntime: at com.google.android.gms.internal.wearable.zzb.onTransact(Unknown Source:22)
09-27 09:52:41.284 7114 7114 E AndroidRuntime: at android.os.Binder.execTransact(Binder.java:731)
My steps to reproduce:
I'd also like to report that the Wear OS app doesn't seem to work well on Wear OS China, as I have to force stop "Wear OS by Google" phone app to make Authenticator Pro's watch app recognize and sync with the phone app during initial setup. Tested on Mi Watch.
----- English -----
hi folks,
the app is very usefull and I like it so much! Thanks! My favorite benefits are the categories function to sort all my 14 OTPs and the option to backup it.
If I still to have two wishes, then I would like to have a widget that can be filtered for a category and an option to use categories in the WearOS app. (Start the WearOS app -> list of categories (All, Cat1, Cat2, ...) and then the OTPs there.
Have many thanks in advance.
----- German -----
Klasse App... Endlich kann man mal die mittlerweile 14 OTPs in Kategorien unterteilen und auch sichern. Auch die WearOS-Integration ist Spitze, wo selbst Google diese bei ihrer eigenen Authentificator-App gestrichen hat. Wenn ich noch zwei Wunsch frei habe, dann hätte ich gern noch ein Widget welches man auf eine Kategorie filtern kann und die Auswahlmöglichkeit der Kategorien in der WearOS-App. (WearOS-App starten -> Liste mit Kategorien (Alle, Kat1, Kat2, ...) und dann dadrin die OTPs.
Vorab vielen lieben Dank.
I just updated to the newest version but I can't seem to find the Blizzard icon in this version. I looked through the changelog and it seems to have been removed. If it's possible, please add it back :)
Hello,
I've try to import massively some entries by using the import option. I've recreate the Json architecture as on an export example but it's crash after the import.
I've used few websites to test my json and validate it. On multiple website, the json is valid.
How works AuthenticatorCategories ? I should put and CategoryId targeting an id in the Categories and use an AuthenticatorSecret from Authenticators right ?
Any way to add an error log or warning or something equivalent? I'am importing 55 entries :).
Thanks.
Alex.
It looks like since v1.6.2, you forgot to add the per-release changelogs in Fastlane. Could you please start adding them again (maybe starting with the current one – not essentially needed to fill the entire gap, though that would be consistent)? Thanks!
Kindly add docker Icon in upcoming update.
Currently entries are shown in the order they were added. This can make finding something quickly hard when there's lots of items. I think it would be sensible to sort items by Issuer first, and then by username.
Thanks!
First of all thanks for this great app! Since Google removed Wear compatibility from their app, this is the only real alternative.
To my problem: Trying to add my Ubisoft login, I get "wrong formatted qr code" or similar. When trying to enter the key manually, the codes are wrong. Is this something you can fix or is it something only Ubisoft can fix?
Regards,
dansou901
I'd love to be able to use the app without a phone connection. On my old Pebble watch, there was an authenticator app that stored the seeds on the watch and was able to generate codes without needing to be connected to the phone. Currently, this app doesn't work without an active connection to the paired phone.
If the Wear OS app could work while the watch was in offline or airplane mode, I'd be able to use it to generate codes while still keeping my watch in battery saving mode with connectivity disabled.
I think it would be quite a nice feature to show default authentication code of selected (or last used) authentication code on Wear OS app. I have one (google) authenitication and WearOS app requires to tap this provider, than it shows the code. Even if I have more authentication providers there is a chance one of them would be used most of time. I remember Google Authenticator for WearOS was showing the last code immediately (maybe I was using it with one auth only). This option (of opening last auth code) should be configurable on the watch because somebody may not like this feature.
Hi all,
Sorry for the stupid question, but I don't find the Wear OS companion app.
Where do I find that to install?
Thank you in advance and best regards
Axel
Hello,
I've noticed following in the recent version 1.9.0: When you change from any theme to "System" in the "Theme" settings while you device is in the opposite mode than you had selected before, the background color changes, but the icons do not.
I've tested this on Samsung Galaxy A71, Samsung Tab S6 and on Emulator Pixel Q 10.
Hello,
I've been using this app for a while now and I'm super happy with it, especially compared to other authenticator apps. Thanks for making it!
One pain point I encounter tho is long startup times when the app isn't cached. On a Nexus 6 running Android 8 (yes, it's a bit old by now) with version 1.9.0 and 14 entries in the app, I count 5 seconds until the app shows anything, and another 2-3 seconds until the authenticators appear.
Can something be improved here?
Thanks!
This would save having to do it after creating the code and might help prevent forgetting to assign it to a specific category.
Would it be possible to add translations to the App?
I could contribute to German and Thai localization.
Crodwin/.po files/strings whatever floats your boat @jamie-mh 😄
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.