I think that I have found a bug in the Bubble App Connector Plugin.
Let me explain, what we are trying to do, first:
We are connecting various bubble apps to a “hub” app, thereby providing single sign on.
The “Relying Party” (RP) apps are using the Bubble App Connector Plugin in order to authenticate with the central “Identity Provider” (IP) app.
The Plugin takes care of synchronizing the accounts in the IP app’s database with the RP app’s database.
Unfortunately, we experience a problem if we are working with the preview of multiple versions of the RP apps:
There is a check box in the App Connector Plugin that says “Match Versions (Live vs Dev.)”
If this is left checked, the development versions of the RP apps will authenticate against the user accounts in the development database of the IP app.
But any other version of the RP apps will authenticate against the live database of the IP app and this is causing problems:
The App Connector Plugin will try to copy the user ID from the live database of the IP into the development database of the RP app if we are trying to preview any RP app version other than development.
The development version of the RP apps will try to copy the user ID from the development database of the IP app.
Even if the accounts share the same email address, the User ID will be different and this causes conflicts when you try to log in with different versions of your app (other than live).
We have several developers working on our RP apps and they all use their own versions. If any of them previewed the “development” version first, they will see an error message similar to “An account with this email address already exists” when they try to log in with ‘their’ version afterwards.
In my understanding, the dev version and the version derived from it should always connect to the development database of the IP app, when the check box “Match Versions” is checked, because all of these version write to the development database in the destination (RP) app.
Only the live version of the RP apps should connect to the live database of the IP app.
This way, conflicts like I have explained above will be avoided.