我正在尝试使用azure移动服务,并实施了身份验证示例here。这适用于大多数设备(桌面上的iOs,IE9和chrome,IE10 Surface RT,android),但在WP8设备(确切地说是诺基亚920)上它会返回
“无法访问开窗器。它可能位于不同的Internet Explorer区域”
尝试从验证提供程序弹出窗口返回后。这在上面的链接中简要提到,但只能从localhost连接到服务。这不是这种情况,其他设备工作正常。它似乎不是任何特定身份验证提供程序的问题 - 所有(Facebook,谷歌,推特,Windows连接)返回相同的消息。而且当这些其他设备工作时,服务似乎不太可能被错误配置,但很可能会有一些我想念的微妙。
答案 0 :(得分:1)
我获得身份验证的方式不是使用Facebook JavaScript SDK,而是另一个流程,在此处描述https://developers.facebook.com/docs/facebook-login/login-flow-for-web-no-jssdk/#step2
为了在从Facebook获得重定向时处理响应,我使用了以下代码:
function handleLoginResponse() {
var frag = $.deparam.fragment();
if (frag.hasOwnProperty("access_token")) {
client.login("facebook", { access_token: frag.access_token }).then(
function () {
// do your thing when logged in
}, function (error) {
alert(error);
});
}
}
此代码使用jQuery BBQ插件,可在此处找到http://benalman.com/projects/jquery-bbq-plugin/。
通过这种方式,我可以让Facebook认证在WP8上运行,并且我可以将访问令牌传递给移动服务登录。
一个小问题是,现在访问令牌会粘在我的站点URL中,例如,如果用户决定共享该URL,我认为这是一个问题。我想我可以通过例如解决这个问题。将信息放入cookie(或本地存储),然后重定向到我站点的纯URL。