Аутентификация с использованием Apache Cordova для Visual Studio

Я работаю над кросс-платформенным приложением Twitter, используя Cordova в Visual Studio, и я застрял на аутентификации учетной записи Twitter.
При работе с Windows/Windows Phone я могу использовать Windows.Security.Authentication.Web.WebAuthenticationBroker.authenticateAsync API и выполнить работу. Но для Android или IOS я не могу использовать API, так как он жалуется, что Windows не определена.

Может ли кто-нибудь помочь мне с образцом кода или предложением о том, как мне выполнять аутентификацию с помощью JavaScript?


person Jagannath    schedule 14.01.2016    source источник


Ответы (2)


Я думаю, что вы не должны полагаться на Windows API в кроссплатформенном приложении, поскольку оно не будет доступно ни на какой другой платформе, кроме Windows. Вместо этого вы можете захотеть пройти аутентификацию с помощью решения javascript, которое работает на любой платформе.
Есть несколько возможностей сделать это в js, в зависимости от того, какие фреймворки и библиотеки вы используете в своем приложении: Вы можете пройти аутентификацию с помощью $.ajax, если вы используете jquery или службу $http, если вы используете angular... Если вы не используете какую-либо библиотеку, вы можете использовать XMLHttpRequest.

person Phonolog    schedule 14.01.2016
comment
Я постараюсь вернуться. - person Jagannath; 18.01.2016

Я нашел решение с помощью плагина InAppBrowser от Cordova.

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

var self = this;
var ref = cordova.InAppBrowser.open(startURI, '_blank', 'location=yes');
ref.show();    
ref.addEventListener('loadstart', function (event) {
   if (event.url && event.url.match('oauth_verifier'))
   {                            
       ref.close();
       self._continueAuthentication(event.url, callback);
   } 
});

ref.addEventListener('loadstop', function (event) {
});

ref.addEventListener('exit', function (response) {
});

_continueAuthentication: function (returnedTokens, callback) {
        var self = this, oauthVerifier, oauthToken;
        var responseKeyValPairs = returnedTokens.split("?")[1].split("&");

        //Disect the important parts
        for (i = 0; i < responseKeyValPairs.length; i++) {
            splits = responseKeyValPairs[i].split("=");
            switch (splits[0]) {
                case "oauth_verifier":
                    oauthVerifier = splits[1];
                    break;
                case "oauth_token":
                    oauthToken = splits[1];
                    break;
       }
}
person Jagannath    schedule 20.01.2016