«Произошла ошибка при доступе к цепочке для ключей» - PullRequest
5 голосов
/ 08 марта 2020

Я использую плагин Firebase Auth для Flutter, чтобы войти с помощью Google в моем приложении, и он отлично работает в iOS и Android.

Моя проблема начинается когда я пытаюсь использовать Firebase Auth в моем iOS «Share Extension». Я новичок в iOS, поэтому я не очень знаком с Swift и XCode, но, насколько я понимаю, я должен включить перекрестную аутентификацию с помощью общей iOS Keychain , чтобы аутентифицировать пользователя в мое общее расширение.

У меня есть 2 цели в моем проекте, «Бегун» и «Расширение общего доступа», поэтому я включил общий доступ к цепочке ключей для них обоих:

enter image description here

Когда включен общий доступ к цепочке для ключей, я получаю следующую ошибку при попытке войти с помощью Firebase Auth:

Unhandled Exception: PlatformException(ERROR_KEYCHAIN_ERROR, An error occurred when accessing the keychain. The @c NSLocalizedFailureReasonErrorKey field in the @c NSError.userInfo dictionary will contain more information about the error encountered, null)
#0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:569:7)
#1      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:321:33)
<asynchronous suspension>
#2      MethodChannel.invokeMapMethod (package:flutter/src/services/platform_channel.dart:349:48)
#3      MethodChannelFirebaseAuth.signInWithCredential (package:firebase_auth_platform_interface/src/method_channel_firebase_auth.dart:161:23)
#4      FirebaseAuth.signInWithCredential (package:firebase_auth/src/firebase_auth.dart:208:10)
#5      signInWithGoogle (package:matkonit/google_sign_in.dart:17:45)
<asynchronous suspension>
#6      LoginPageState.signInButton.<anonymous closure>.<anonymous clo<…>

Это то, что я получаю при печати NSLocalizedFailureReasonErrorKey :

SecItemCopyMatching (-34018)

Что я могу сделать, чтобы это исправить?


Редактировать: Я заметил, что перезапуск симулятора делает войти в работу, но только иногда ... я не мог понять, почему.

1 Ответ

0 голосов
/ 19 апреля 2020

Я не добавил префикс Team ID до своего идентификатора приложения, поэтому он не работал. Для этого вам нужно иметь учетную запись Apple Developer и Team ID, например:

Auth.auth().useUserAccessGroup("XK********.com.matkonit.SharedItems")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...