Как я могу использовать launchmyapp с Meteor для ссылки для подтверждения электронной почты?

Я использую пакет Meteoric для запуска ionic в своем метеорном приложении. Я бы хотел использовать https://github.com/EddyVerbruggen/Custom-URL-scheme (плагин nl.x-services.plugins.launchmyapp) в моем приложении. На самом деле я его использую, но он работает неправильно.

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

Отправляемая ссылка выглядит так.

myappname://verify-email/longtokenidhere1212332

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

Обновление 1:

У меня это почти работает. Я добавил handleOpenURL как глобальную функцию, как показано ниже.

Meteor.startup(function() {
    handleOpenURL = function handleOpenURL(url) {
        var token = url.replace("myappname://verify-email/", "");
        console.log("Token: " + token);
        Router.go('/verify-email/', {"paramToken": token});
    }
});

Теперь я вижу вывод токена на консоль.

Но когда он маршрутизирует, я получаю страницу маршрута, не найденную. Как я могу распечатать текущий URL-адрес из консоли, чтобы увидеть, правильно ли я перехожу к полному URL-адресу? Я попробовал window.URL, но это печатает объект URLConstructor().


person JoshJoe    schedule 26.04.2015    source источник


Ответы (1)


«/verify-email» не является маршрутом железного маршрутизатора; он запечен в самом метеоре.

Таким образом, вместо Router.go() вы можете сделать вызов Accounts.verifyEmail из клиент, вот так:

Meteor.startup(function() {
    handleOpenURL = function handleOpenURL(url) {
        var token = url.replace("myappname://verify-email/", "");
        console.log("Token: " + token);
        // mark this client's email as verified by using the token
        Accounts.verifyEmail(token, 
            function(error){
               if (error) {
                   console.log("email not verified");
               } else {
                   console.log("email verified successfully!");
               }
            }
        );
    }
});
person cobberboy    schedule 25.11.2015
comment
Спасибо за это. Я обязательно попробую. - person JoshJoe; 25.11.2015