[bubble] メールアドレス重複でのサインアップエラー回避できるのか [ソーシャル接続]

2021.10.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

以前API Connectorを使ってAuth0でアプリにログインできるようにしました(https://dev.classmethod.jp/articles/login-bubble-webapp-with-auth0/

emailとpasswordでログインしていましたが、ソーシャル接続(google)を追加してログインを行ったところ、Bubbleアプリの方でこのアドレスは既に使われていますというエラーが出てログインできませんでした。

パスワードログインした時のメールアドレスとGoogleログインした時のメールアドレスが同じなのでこのエラーになったと思われます。

End-users of a Bubble app must have unique email addresses

とドキュメントにも記載がありました

ユーザーがBubbleにサインアップした場合、データベース(User)にデータが作成されいます。

ここのemailが重複しているのでデータを作成できないということだと思われます。

ソーシャルログインとパスワード両方を対応したいとき、このままでは不都合なのでなんとか回避する方法がないか考えてみました。

前提

BubbleのFreeプランを用いています。有料プランで回避できる方法があるかもしれませんが調べていません。

案:Api Connectorの設定(User email key path)を変更する

User email key path はもともとemailにしています。

これはAuth0の/userinfoから返ってくるkeyのemailを利用しているからです。

この部分を他のユニークなもの(sub)に変えてあげればどうなるのか試してみました。

この設定でdebug_mode=trueでログインしてみると(Googleログイン)

DataにはAuth0のsubの値が格納され、Bubbleアプリでもログイン可能となりました。

※ ログインした時の映像

この設定にした後も、BubbleのUser TypeにもEmailアドレスを保存しておくのであれば、ログイン時のworkflowでMake changes to thingを使って保存してあげることもできます。

  • stepにMake changes to thing
  • Thing to changecurrent user
  • Change another fieldに追加したいfield名を設定する
    • 例) real_email = Auth0 API - API Call's email

こんな感じで保存されるようになります。

最後に

UserのEmailに保存する値をユニークなものに変更することで同じメールアドレスを持つユーザーをログインするようにしてみました。

本記事ではsubというkeyを使いましたが、もちろんAuth0側でユニークな値を独自で作成してUser profileに組み込んで使うこともありだと思います。

注意点としては、もともとEmailアドレスを保存すると想定している箇所に別の値を入れたので、

BubbleアプリやPluginで不都合なことが起こる可能性があります。

最終的にはAuth0のUser Account Linking を使って同じメールアドレスのユーザーを一人として扱うようにする方が良くなると思います。