Firebase - ArtemMikhaylov/my_flutter_notes GitHub Wiki

Page navigation

Firebase auth

Apple sign in

Юзер может авторизироваться анонимно (с помощью кнопки Hide my email в процессе авторизации). Приложению в таком случае предоставляется рандомный email связанный с Apple ID. Судя по всему письма на юзеру отправленные на этот имэйл будут доставлены только для зарегестрированных ящиков приложения в apple консоли разработчика.

Приложение должно при этом выполнять определенные требования Comply with Apple anonymized data requirements, вот некоторые из них:

This includes obtaining any required user consent before you associate any directly identifying personal information with an anonymized Apple ID:

  • Link an email address to an anonymized Apple ID or vice versa.
  • Link a phone number to an anonymized Apple ID or vice versa
  • Link a non-anonymous social credential (Facebook, Google, etc) to an anonymized Apple ID or vice versa.

Вопрос в том, относится ли это только к линкованию аккаунтов? т.е. елси мы используем логику подтверждения телефона/email, т.е. firebase процедуру линкования аккаунтов разных провайдеров. Или в целом просто вбитие любой такой информации? Скорее всего речь идет именно о линковании аккаунтов, более точно нужно видимо смотреть в документации Apple.


Если пользователь авторизуется второй раз, то доступ к кнопке "Hide email" ему уже не предоставляется. Если в первый раз он авторизовался анонимно, то в этот раз он заходит именно с этим же анонимным имэйлом. Если же напротив, не анонимно, то соответственно заходит со своим имэйлом. Если например в первый раз авторизироваться анонимно, в последющем отчистить приложение от использвания apple sign in в настройках на iphone, и затем (кнопка "Hide email" становится доступна) авторизироваться уже не анонимно, то авторизация все равно проходит как анонимного пользователя, email не привязывается в firebase console, т.е. не появляется два связанных аккаунта - один анонимный apple, и другой с потой. В консоли firebase по прежнему один анонимный. Однако например, если сначала автризироваться как не анонимный, затем удалить свой аккаунт в firibase и отчистить apple sign in в настройках, то следующая авторизации пройдет уже соответственно включенной/выключенной опции "Hide email".

Firestore

  • Why I Switched Away From Google Firestore. Medium. aug 2020., look up answers too.
  • If you type a string with new line symbols \n into Firestore field using Firebase consol, then in Flutter you'll receive \\n. To present string correctly in UI you can rechange all \\n with \n: info = info.replaceAll('\\n', '\n');

Listen to changes of document

    Firestore db = Firestore.instance;

    db.collection('someCollection').document('someDocument').snapshots()
        .listen((DocumentSnapshot snapshot) {
        
    });

    //example with users collection base on firebase auth 
    db.collection('users').document(firebaseUser.uid).snapshots()
        .listen((DocumentSnapshot snapshot) {
        
    });

Localization

Firebase Storage

  • Listening to changes on file or directory isn't possible.

  • It is not possible to construct url to file, you have to request it asynchronously using reference.getDownloadURL() Stackoverflow answer (probably method performs network request to firebase server). For native android though there's some integration with Glide library (google for Firebase UI) which probably include this logic.

  • listFiles function, которая выводит список файлов дирректории - не реализована во Flutter плагине. Issue открыты уже год. раз, два