Как читать параметры запроса из динамических ссылок Firebase c (FDL) в android APP - PullRequest
0 голосов
/ 02 февраля 2020

Я занимаюсь разработкой приложения Android, в котором я использовал Firebase Password Authentication для входа в систему.

После того, как пользователи предоставят свою электронную почту и пароль, Я отправляю подтверждающее электронное письмо с использованием FirebaseAuth SDK.

/**  SEND A VERIFICATION MAIL TO THE USER **/
ActionCodeSettings.Builder settingBuilder  =  ActionCodeSettings.newBuilder();
String url = getString(R.string.link_mail_verification);

settingBuilder.setUrl(url).setHandleCodeInApp(true);

ActionCodeSettings settings = settingBuilder.build();

user.sendEmailVerification(settings).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {

if(task.isSuccessful()){

   Log.e("MAIL_VERIFICATION", "onComplete: mail verification sent" );

}else{
    // not sent

  }
 }
});

При проверке своей электронной почты я хочу, чтобы пользователи быть перенаправленным непосредственно в приложение, если оно установлено, вот где я использовал Dynami c link

Сначала я начал с создания ссылки Dynami c в консоли Firebase enter image description here

Во-вторых, я изменил шаблон электронной почты firebase, чтобы использовать мою динамическую ссылку c в качестве URL-адреса действия. enter image description here

и в электронном письме, отправляемом пользователю, некоторые параметры запроса (например, oobCode, apiKey) добавляются к динамической ссылке c. enter image description here

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

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

Методы, которые я до сих пор пробовал, но они не работали: Метод 1: попытка получить запрос из Intent

FirebaseDynamicLinks.getInstance().getDynamicLink(getIntent()).addOnSuccessListener(new OnSuccessListener<PendingDynamicLinkData>() {
        @Override
        public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {

            Uri deepLink = null;
            if(pendingDynamicLinkData != null){
                deepLink = pendingDynamicLinkData.getLink();
            }

            // trying to get from the intent
            if(deepLink != null){

                 Uri intentData = getIntent().getData();
                 if(intentData != null){

                     String code =  getIntent().getStringExtra("oobCode"); // always returns null

                 }
            }
        }
    });

Метод 2 : пытаюсь получить параметр запроса из PendingDynamicLinkData

 FirebaseDynamicLinks.getInstance().getDynamicLink(getIntent()).addOnSuccessListener(new OnSuccessListener<PendingDynamicLinkData>() {
        @Override
        public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {

            Uri deepLink = null;
            if(pendingDynamicLinkData != null){
                deepLink = pendingDynamicLinkData.getLink();
            }

            // trying to get from the deep link URI
            if(deepLink != null){

                String code = deepLink.getQueryParameter("oobCode"); // returns null too
            }
        }
    });

А вот мой манифест: xml

<activity
        android:name=".activities.MainActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data
                android:host="@string/app_link_domain"
                android:scheme="https"
              />
        </intent-filter>

    </activity>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...