       AuthProvider.authCustom,
       AuthProvider.authPasswordless,
       AuthProvider.authGameCenter,
+      AuthProvider.authMicrosoft,
     ])
   }
 

          }
          // [END firebase_auth_gamecenter]
        }
      }
      picker.addAction(action)
    }

    case authCustom
    case authPasswordless
    case authGameCenter
    case authMicrosoft
  }

  /*! @var kOKButtonText
      @brief The text of the "OK" button for the Sign In result dialogs.
  */
  let kOKButtonText = "OK"

  /*! @var kTokenRefreshedAlertTitle
      @brief The title of the "Token Refreshed" alert.
  */
  let kTokenRefreshedAlertTitle = "Token"

  /*! @var kTokenRefreshErrorAlertTitle
      @brief The title of the "Token Refresh error" alert.
  */
  let kTokenRefreshErrorAlertTitle = "Get Token Error"

  /** @var kSetDisplayNameTitle
      @brief The title of the "Set Display Name" error dialog.
  */
  let kSetDisplayNameTitle = "Set Display Name"

  /** @var kUnlinkTitle
      @brief The text of the "Unlink from Provider" error Dialog.
   */
  let kUnlinkTitle = "Unlink from Provider"

  /** @var kChangeEmailText
      @brief The title of the "Change Email" button.
  */
  let kChangeEmailText = "Change Email"

  /** @var kChangePasswordText
      @brief The title of the "Change Password" button.
  */
  let kChangePasswordText = "Change Password"

  /** @var kUpdatePhoneNumberText
      @brief The title of the "Update Phone Number" button.
   */
  let kUpdatePhoneNumberText = "Update Phone Number"

  /** @var handle
      @brief The handler for the auth state listener, to allow cancelling later.
   */
  var handle: AuthStateDidChangeListenerHandle?

  /** @var microsoftProvider
      @brief The OAuth provider instance for Microsoft.
   */
  var microsoftProvider : OAuthProvider?

  func showAuthPicker(_ providers: [AuthProvider]) {
    let picker = UIAlertController(title: "Select Provider",
