Android Войти с помощью apple и firebase flutter - PullRequest
5 голосов
/ 09 июля 2020

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

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

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

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

intent: // callback? $ {PARAMETERS_FROM_CALLBACK_ BODY} #Intent; package = YOUR.PACKAGE.IDENTIFIER; scheme = signinwithapple; end

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

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

Часть, которая говорит: ПАРАМЕТРЫ ИЗ ТЕЛА ОБРАТНОГО ЗВОНКА должны быть заполнены телом с кодом URL, которое вы получаете конечная точка с сервера Apple. Я не уверен, как это получить и правильно отформатировать часть PARAMATERS_FROM_CALLBACK_BODY URL-адреса перенаправления, чтобы это работало для Android.

1 Ответ

1 голос
/ 21 августа 2020

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

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

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

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

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

  2. И затем вы хотите реализовать свой вызов signInWithApple как следующую ссылку Примечание: SERVER_AS_PER_THE_DOCS необходимо обновить в соответствии с вашей службой glich.

    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; }
    
...