Пользовательские вкладки Chrome не перенаправляют обратно в гибридное приложение

Я пытаюсь интегрировать oauth в свое гибридное приложение и использую angularjs 1 с Cordova. Я пытался использовать этот плагин https://github.com/EddyVerbruggen/cordova-plugin-safariviewcontroller вместе с https://github.com/EddyVerbruggen/Custom-URL-scheme

Но это не прямолинейно и не ясно для меня. Столкнулся с двумя проблемами

  1. Невозможно перенаправить в приложение после выполнения oauth.
  2. Как закрыть пользовательскую вкладку Chrome и получить данные в приложении после завершения oauth.

Ниже то, что я пытаюсь.

Код на стороне клиента:

var options=[{url:oauthPostURL,hidden:false,animated:false}];
$scope.openUrl = function(options) {
            console.log("inside openurl--");
            var deferred  = $q.defer();
            try{
                cordova.exec( 
            // success function
            function(response){
                       deferred.resolve(response);
                    },
              //failure function
                    function(response){
                        deferred.resolve(false);
                    },
              "ChromeCustomTabPlugin", "show", options);

            }catch(e){
                console.log("error in corodva plugin ::"+e);
            }
            return deferred.promise;
        }

 function handleOpenURL(url) {
  setTimeout(function() {
    //SafariViewController.hide();
    var data = decodeURIComponent(url.substr(url.indexOf('=')+1));
    console.log('Browser data received: ' + data);
  }, 0);
}

кто будет вызывать эту функцию handleopenurl?

В плагине нет метода hide(), чтобы закрыть пользовательскую вкладку Chrome.

ServerSide :

Я использую ChromeCustomTabPlugin.java из упомянутого выше плагина.

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


person Rama    schedule 17.10.2018    source источник
comment
Все еще пытаюсь понять это, если какой-либо плагин с пользовательской схемой URL-адресов был реализован, пожалуйста, вставьте образец здесь или посоветуйте   -  person Rama    schedule 18.10.2018
comment
Я решил это сам.   -  person Rama    schedule 28.10.2018


Ответы (1)


Я решил это Сам. Допущено несколько ошибок. Я добавил плагин custom-url-schema вручную.

  • Функция HandleopenUrl должна быть размещена на странице, которая является глобальной, я поместил функцию в index.html, который является моей начальной страницей.

  • Отсутствовал файл LaunchMyApp.java, который находится внутри плагина custom-url.

  • Файл launchMyApp.js отсутствовал.

    <plugin name="cordova-plugin-customurlscheme" spec="^4.3.0">
        <variable name="URL_SCHEME" value="" />
        <variable name="ANDROID_SCHEME" value="" />
        <variable name="ANDROID_HOST" value="" />
        <variable name="ANDROID_PATHPREFIX" value="/" />
     </plugin>

  • Эти строки в config.xml отсутствовали.
person Rama    schedule 28.10.2018