Swift: Bagikan status Auth antar aplikasi

Di dalam aplikasi saya, pengguna dapat masuk dengan Apple, Google, Facebook dan Email menggunakan Firebase. Saya juga memiliki Share Extension dan saya ingin membagikan auth-state dari Aplikasi Utama sehingga saya juga dapat memanggil Auth.auth.currentUser di dalam ShareExtension saya sehingga pengguna dapat mengakses Cloud-Firestore.

Sekarang saya tahu ada dokumentasi yang disediakan oleh Firebase. Namun saya tidak yakin tentang Langkah 2:

do {
   try Auth.auth().useUserAccessGroup("TEAMID.com.example.group1")
} catch let error as NSError {
   print("Error changing user access group: %@", error)
}

Di mana tepatnya saya harus menelepon ini?

Sunting:

Aplikasi Utama:

masukkan deskripsi gambar di sini

Berbagi Ekstensi: masukkan deskripsi gambar di sini

Pembaruan:

Ini memunculkan error ketika memanggil kode di atas sebelum signIn:

Kesalahan mengubah grup akses pengguna: %@ Error Domain=FIRAuthErrorDomain Code=17995 Terjadi kesalahan saat mengakses gantungan kunci. Bidang @c NSLocalizedFailureReasonErrorKey di kamus @c NSError.userInfo akan berisi lebih banyak informasi tentang kesalahan yang terjadi UserInfo={FIRAuthErrorUserInfoNameKey=ERROR_KEYCHAIN_ERROR, NSLocalizedFailureReason=SecItemCopyMatching (-34018), NSLocalizedDescription=Terjadi kesalahan saat mengakses gantungan kunci. Bidang @c NSLocalizedFailureReasonErrorKey di kamus @c NSError.userInfo akan berisi informasi lebih lanjut tentang kesalahan yang terjadi}


person Chris    schedule 27.10.2020    source sumber
comment
Di dalam didFinishLaunchingWithOptions (dan metode serupa di ekstensi) saya kira. Tepat setelah FirebaseApp.configure()   -  person Dima Rostopira    schedule 02.11.2020
comment
@DimaRostopira mencobanya tetapi ketika memanggil let userID = Auth.auth().currentUser!.uid di dalam Share Extension saya selalu nil...   -  person Chris    schedule 03.11.2020
comment
Pastikan Anda menggunakan id grup yang benar dan grup aplikasi yang diaktifkan untuk ekstensi   -  person Dima Rostopira    schedule 04.11.2020
comment
@DimaRostopira apa sebenarnya yang Anda maksud dengan id grup yang benar ?   -  person Chris    schedule 04.11.2020


Jawaban (1)


Dalam dokumentasi Anda dapat melihat alur yang harus Anda ikuti. Pertama, di mana pun di aplikasi Anda melakukan proses login, Anda harus menambahkan baris kode ini:

do {
  try Auth.auth().useUserAccessGroup("TEAMID.com.example.group1")
} catch let error as NSError {
  print("Error changing user access group: %@", error)
}

Anda dapat menambahkannya dalam fungsi didFinishLaunchingWithOptions di delegasi, namun Anda dapat menggunakannya di mana pun Anda inginkan.

Di aplikasi lain Anda harus menambahkan kode yang sama. Kedua aplikasi harus memiliki Access Group yang sama, bukan?

Kemudian di salah satu aplikasi, Anda harus menjalankan kalimat ini:

Auth.auth().signInAnonymously { result, error in
  // User signed in
}

Anda bisa meletakkannya tepat setelah kode pertama di atas. Kemudian Anda akan dapat mengakses pengguna di kedua aplikasi seperti ini:

var user = Auth.auth().currentUser
person wazowski    schedule 04.11.2020
comment
yang Anda maksud dengan Grup Akses yang sama adalah Grup Aplikasi atau Grup Rantai Kunci? btw, saya memperbarui pertanyaan saya - person Chris; 04.11.2020
comment
Maksud saya, bagian TEAMID.com.example.group1 ini, harus sama untuk kedua aplikasi. Dan saat Anda masuk di aplikasi apa pun, Anda akan dapat mengakses konten lengkap Auth.auth(), sehingga Anda dapat memeriksa pengguna, negara bagian, status, dll... - person wazowski; 04.11.2020
comment
Apakah Anda menghapus aplikasi dari perangkat saat mengganti grup dan membuat folder build yang jelas sebelum membangun kembali? Itu adalah pertanyaan konyol tapi terkadang itulah masalahnya. - person wazowski; 04.11.2020
comment
apakah Anda sudah melihat pertanyaan saya yang diperbarui? Pesan kesalahannya? Saya tidak mengerti... - person Chris; 04.11.2020
comment
Nah, errornya karena konfigurasi akses keychain, menurut saya lebih baik ikuti panduan ini daripada saya coba jelaskan :) Coba lihat panduan ini kawan: developer.apple.com/documentation/security/keychain_services/ - person wazowski; 04.11.2020
comment
Mari kita melanjutkan diskusi ini dalam chat. - person Chris; 04.11.2020