Вход в Android с помощью Apple и Firebase Flutter

Я использую sign_in_with_apple, и у меня работает вход для ios, но компонент android не работает.

Я просмотрел документы и вопросы, где это задано, но нет четких ответов. https://github.com/aboutyou/dart_packages/tree/master/packages/sign_in_with_apple

Я застрял в части документации для этого плагина, в которой говорится:

При обратном вызове Sign in with Apple на вашем сервере (указанном в WebAuthenticationOptions.redirectUri) безопасно перенаправьте обратно в приложение Android, используя следующий URL-адрес:

намерение://обратный вызов?${PARAMETERS_FROM_CALLBACK_ BODY}#Intent;package=ВАШ.ИДЕНТИФИКАТОР ПАКЕТА;схема=signinwithapple;end

ПАРАМЕТРЫ ИЗ ТЕЛА CALLBACK BODY должны быть заполнены телом в кодировке urlencode, которое вы получаете на конечной точке с сервера Apple, а параметр пакета должен быть изменен в соответствии с идентификатором пакета вашего приложения (как опубликовано в Google Play Store). . Оставьте путь обратного вызова и схему входа в Apple нетронутыми.

Кроме того, при обработке входящих учетных данных на клиенте обязательно перезаписывайте текущий (гостевой) сеанс пользователя только после того, как ваш собственный сервер проверит параметр входящего кода, чтобы ваше приложение не было восприимчиво к вредоносным входящим ссылкам (например, ведение журнала текущего пользователя).

Часть, в которой говорится: PARAMETERS FROM CALLBACK BODY должна быть заполнена urlencoded телом, которое вы получаете на конечной точке с сервера Apple. Я не уверен, как получить это и правильно отформатировать часть PARAMATERS_FROM_CALLBACK_BODY перенаправления URL, чтобы это работало для Android.


person gg11    schedule 08.07.2020    source источник
comment
Привет, у тебя есть новости по этому поводу? Я тоже там застрял. Спасибо.   -  person papillon    schedule 31.07.2020
comment
Я также смущен, что делать на этом этапе. Кто-нибудь может объяснить?   -  person shraddha11    schedule 05.05.2021


Ответы (1)


У меня был точно такой же вопрос, и вчера я действительно открыл проблему в их репо.

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

Я заставил Apple Sign In для Android работать (через аутентификацию в веб-браузере), выполнив следующие действия:

Примечание. Поскольку часть iOS у вас уже работает, я предполагаю, что вы уже позаботились о базовой настройке.

  1. Настройте службу glitch.com на основе их документа. часть легко следовать.

  2. Затем вы хотите реализовать вызов signInWithApple в виде следующего ссылки. SERVER_AS_PER_THE_DOCS нужно обновить в соответствии с вашим глюком сервиса.

    Future<FirebaseUser> signInWithApple() async {
    var redirectURL = "https://SERVER_AS_PER_THE_DOCS.glitch.me/callbacks/sign_in_with_apple";
    var clientID = "AS_PER_THE_DOCS";
    final appleIdCredential = await SignInWithApple.getAppleIDCredential(
        scopes: [
          AppleIDAuthorizationScopes.email,
          AppleIDAuthorizationScopes.fullName,
        ],
        webAuthenticationOptions: WebAuthenticationOptions(
            clientId: clientID,
            redirectUri: Uri.parse(
                redirectURL)));
    final oAuthProvider = OAuthProvider(providerId: 'apple.com');
    final credential = oAuthProvider.getCredential(
      idToken: appleIdCredential.identityToken,
      accessToken: appleIdCredential.authorizationCode,
    );
    final authResult =
        await SignInUtil.firebaseAuth.signInWithCredential(credential);
    return authResult.user; }
    
person CharlesC    schedule 21.08.2020
comment
Нет ли способа заставить URL-адрес перенаправления работать без использования Glitch? - person Jonas Zebari; 03.11.2020
comment
@JonasZebari Конечно, вы можете, Glitch - это просто бесплатный хост-сервис, который вы можете использовать, но у вас есть какой-то сервис для обработки перенаправления. - person CharlesC; 07.11.2020