Q:

Autenticar no Sharepoint on-line via Rest api + AngularJS

Estou tentando criar uma aplicação usando Visual Studio 2015, Cordova + AngularJS.
A minha necessidade hoje é autenticar no Sharepoint e consumir os Web Services.
Já fiz diversas tentativas de autenticação, mas não estou a ter sucesso.
(function () {

var app = angular.module('spContact', ['ngRoute']);

app.factory('spAuthService', function ($http, $q) {

    var authenticate = function (userId, password, url) {

        var signInurl = 'https://' + url + '/_forms/default.aspx?wa=wsignin1.0';
        var deferred = $q.defer();
        var message = getSAMLRequest(userId, password, signInurl);

        $http({
            method: 'POST',
            url: 'https://login.microsoftonline.com/extSTS.srf',
            data: message,
            headers: {
                'Content-Type': "text/xml; charset=\"utf-8\""
            }
        }).success(function (data) {
            getBearerToken(data, signInurl).then(function (data) {
                deferred.resolve(data);
            }, function (data) {
                deferred.reject(data)
            })
        });

        return deferred.promise;
    };

    return {
        authenticate: authenticate
    };

    function getSAMLRequest(userID, password, url) {
        return 'envelope';
    }

    function getBearerToken(result, url) {

        var deferred = $q.defer();
        var securityToken = $($.parseXML(result)).find("BinarySecurityToken").text();
        if (securityToken.length == 0) {
            deferred.reject();
        }
        else {
            $http({
                method: 'POST',
                url: url,
                data: securityToken,
                headers: {
                    Accept: "application/json;odata=verbose"
                }
            }).success(function (data) {
                deferred.resolve(data);
            }).error(function () {
                deferred.reject();
            });
        }

        return deferred.promise;
    }
});

})();

Alguém me consegue ajudar?

A:

Era um problema de cross-domain (login.microsoftonline.com é um domínio externo, obviamente). Mais detalhes sobre como resolver esse tipo de problema no Phonegap em Habilitar CORS via JavaScript (Phonegap).

