WindowsAzure.MobileServiceClient.login不会返回完成承诺

时间:2015-01-03 13:46:04

标签: cordova azure winjs azure-mobile-services

我正在构建一个Apache Cordova移动应用程序,使用Azure移动服务对Google进行身份验证。要做到这一点,我使用的是WinJS azure客户端:

var client = new WindowsAzure.MobileServiceClient("<myMobileService>", "<myKey>");


function logIntoGoogle() {
    client.login("google").done(function(results){
            //do something
        },
        function (error) {
        alert(error);
    });
}

应用程序点击logIntoGoogle,成功登录后,应用程序会导航到 [myMobileService] / login / done ,而不是返回完成的承诺,并执行回调。

我错过了什么,拜托?

2 个答案:

答案 0 :(得分:2)

好的,事实证明问题不在于我使用azure API。这更像是我的cordova应用程序的设置/配置问题。

我需要安装phonegap设备插件 (https://git-wip-us.apache.org/repos/asf/cordova-plugin-device.git

和phonegap InAppBrowser插件(https://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser.git)。

安装完成后,返回承诺并执行回调。

答案 1 :(得分:0)

关于我最初告诉你的关于源代码没有承诺的事情:我错了。在花了几个小时浏览完所有关于Microsoft Azure的文档后,我终于看起来甚至对实际发生的事情有了一些了解。

如果 isSingleSignOn 未设置为 true ,则似乎有条件提供回调URL以进行身份​​验证。所以你应该试试

client.login("google", null, true).done(function(results){

以使其成功。

我希望这能解决你的问题,而不是我的第一个答案。如果你仍然遇到问题,请告诉我,所以我可以深入探讨代码库.. :)

<强>更新

实际上,正是因为你在没有InAppBrowser的情况下在Cordova上运行。当我浏览代码时,我发现有 3 login UIs ,根据它们的可用性决定使用的是哪一个。从这三个中,唯一导致URL重定向的是 WebAuthBroker ,它仅在Windows Phone上可用。 WebAuthBroker使用 Windows.Security.Authentication.Web.WebAuthenticationBroker ,它再次使用 authenticateAndContinue ,如果不使用 isSingleSignOn 导致重定向。这再次导致我提供的解决方案。

另外两个用户界面是 Cordova弹出窗口浏览器弹出窗口。这样它就可以使用它认为可用的“最佳”UI。