- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个 HTML5 应用程序,它使用 Azure 移动服务身份验证进行登录(直接来自下面提供的示例代码)。它在所有桌面浏览器和 iPhone 5 的 Safari 中运行良好。但在应用程序/全屏模式下,它什么也不做(不像在 safari 中那样请求显示弹出窗口的许可,并且不会显示弹出窗口),我可以永远等待,什么也不会发生。如果我第二次调用它,它会给出错误“错误:意外失败”...也许是因为第一次尝试仍在运行?任何帮助/见解表示赞赏。
client.login ("facebook").done(function (results) {
alert("You are now logged in as: " + results.userId);
}, function (err) {
alert("Error: " + err);
});
编辑更新,提供更多信息和 2 个潜在想法*
我做了一些更多的研究,发现一个网站使用的方法可以克服这个问题,并且还解决了当前 Azure 移动身份验证方法的两个其他副作用。我认为 Azure 移动团队可能正在寻求做类似的事情,因为代码中存在一些其他身份验证选项的提示(尽管难以阅读和确定,因为最小化的代码被混淆了)。这可能只是在代码中激活这些的问题......
转到http://m.bcwars.com/然后点击 Facebook 登录。您会发现它在“应用程序模式”下的 iPhone Safari 中完美运行,因为它不是弹出窗口,而是停留在当前浏览器窗口中。
此方法解决了当前 Azure 移动方法的另外两个问题。首先,弹出窗口被大多数浏览器解释为潜在的广告,并且要么被自动阻止(桌面 Chrome)...并且用户不知道为什么它不起作用...或者给出用户必须批准的警告( iPhone Safari 处于“浏览器模式”)这很麻烦。如果用户安装了弹出窗口拦截器,那么用户就很难让它正常工作,甚至更有可能。 bcwars.com 方法没有这个问题。
其次,在 iPhone Safari 中,当弹出窗口自动关闭时,如果 Safari 中打开了其他浏览器窗口,则原始页面不会获得焦点。相反,它处于较小/幻灯片模式,因此他们可以选择要显示的内容。如果发生这种情况,用户必须再执行一个步骤...单击浏览器窗口以激活它并给予其焦点...再次更加痛苦,并且更有可能让他们搞砸并且无法正确执行并需要帮助。 m.bcwars.com 没有这个问题。
查看 Azure 移动代码,看起来可能已经有了解决方案。我无法轻松阅读它,因为它被缩小/混淆了,但它似乎有 4 个选项(包括 iFrame 等)用于调用身份验证,并且仅使用 1 个(弹出窗口中的“不太理想的选项”)。一个简单的解决方案是设置一个属性以允许替代身份验证之一起作用。但我读得不够好,无法弄清楚。另一种方法是破解代码(暂时直到微软提供修复程序为止)。
我可以在那里得到一些帮助吗?
最佳答案
您可以使用 Facebook 实现不使用弹出窗口的身份验证流程。基本思想是使用“Web Flow”进行登录,一旦窗口从登录返回,就使用访问 token 将用户登录到 Azure 移动服务。
执行此操作的 Facebook 文档位于此处: https://developers.facebook.com/docs/facebook-login/login-flow-for-web-no-jssdk/#step2
一些代码示例,让您更轻松。
你可以从这样的事情开始:
(请记住将 YOUR_APP_ID 和 YOUR_URL 替换为与您网站相关的内容。
function logIn() {
window.location.replace('https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=http%3A%2F%2FYOUR_URL&response_type=token')
}
这会将窗口重定向到 Facebook 页面,以便用户登录并授权您的应用程序。用户完成操作后,Facebook 会将用户重定向回上面给出的 YOUR_URL。
您可以在此处处理重定向并执行移动服务登录,如下所示:
function handleLoginResponse() {
var frag = $.deparam.fragment();
if (frag.hasOwnProperty("access_token")) {
client.login("facebook", { access_token: frag.access_token }).then(function () {
// you're logged in
}, function (error) {
alert(error);
});
}
}
在这里,您可以解析作为 URL 片段获得的访问 token ,并将其作为参数传递给您对 Azure 移动服务进行的登录调用。
此代码取决于 jquery BBQ轻松处理 URL 片段的插件。
希望这能解决您的问题!
关于iphone - 在应用程序(全屏)模式下使用 iPhone HTML5 进行 Azure 移动 Facebook 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16662532/
我正在尝试使用 Qt 制作游戏,因为它太棒了 ;) 而且您可以免费获得所需的所有东西。唯一的问题是更改系统分辨率和设置 QWidget(或 QGLWidget)“真正的”全屏。 你们中有人成功地做到了
有没有办法以全屏模式(没有工具栏、导航)启动 gwt-app? 我只找到了打开新窗口的提示: Window.open("SOMEURL","SOMETITLE", "fullscreen=yes
if (!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscr
我想解释一下我现在在做什么。我开发了一个 aar(sdk) 并且运行良好。但是,我希望我的 sdk 在被调用时占据全屏,即使调用者有一个工具栏。我尝试了此链接中的示例 [ How to set act
我是 Blazor 的新手,我正在尝试了解如何以全屏模式打开浏览器。我知道我可以执行 Javascript 中断并运行 Javascript,但这违背了 Blazor 的目的。 如何在 Blazor
我正在创建一个全屏应用程序,并且想知道是否有某种方法可以使 NSAlert 位于我创建的 CGDisplayCapture 之上。现在,NSAlert 显示在显示捕获后面。我的主窗口显示得很好(在使用
有人可以解释一下下面的代码是如何工作的吗? 元素指的是视频,全屏指的是页面上的链接。 我无法理解 if 语句 var element = document.getElementById('elemen
我想要实现的是类似于 Instagram 应用内网络浏览器,在您点击广告时使用: 我所做的是,我使用了 WebView bottomSheetDialogFragment,并覆盖了 onCreateD
第二个 ViewController 的顶部有这个空间,它几乎在手机上显示为可关闭的弹出窗口。如何使全屏显示(删除橙色箭头指向的空间)? 最佳答案 这是 iOS 13 的一项更改。用户将开始期望能够滑
我正在尝试在全屏模式下使用 emacs 并使用合适的字体。我有一台运行 Ubuntu 的基于 nvidia 的笔记本电脑。首次加载时,字体很大,认为是 16pt 字体。我使用菜单选项设置了合适的字体(
我有一个 GridView,我使用 BaseAdapter 来调整我的 GridView 中的图像和文本。我有一个问题,当我运行我的应用程序时,我的“GridView”有左、右、上和下边距。我不需要这
是否可以在全屏模式下使用 Android Studio 例如只有我们编码的那个字段应该显示在整个屏幕上。 像这样: 最佳答案 您可以使用“无干扰模式”: 关于全屏 Android Studio,我们在
我正在制作一个应用程序,当手机处于纵向时,我需要 fragment 显示菜单栏(带有设置快捷方式等),但当它处于横向时,我需要全屏。 因此,我有一个管理 2 个 fragment 的 Activity
我想知道是否可以在没有标签栏和导航栏的情况下全屏推送 NavigationController 的 ViewController。我的问题如下: 我的应用在 TabBarController 中嵌入了
我制作了一个1920 * 1048的flash(16:9的屏幕),并将其嵌入到html中喜欢: 问题是: 在 4:3 屏幕中,flash 的宽度为 100%,但顶部和底部有白色填充。看来闪光灯
我想制作一个同时包含多个文本的HTML5视频。 文本应该以不同的css布局(文本颜色、字体、阴影)显示在视频的不同位置(同时) 我试过这个教程http://www.artandlogic.com/bl
需要一些帮助。 我需要水平滑动一次长图像,然后再水平滑动回来...我在这里学习了一个教程 https://css-tricks.com/creating-a-css-sliding-backgroun
我正在制作一个简单的登录页面,并试图将以下图像作为背景全屏:image 我的 CSS 目前看起来像这样: body { background-image: url('/images/bg.jp
我想用透明色覆盖我的背景图片,但颜色没有覆盖背景图片。 这是我的演示: http://jsfiddle.net/farna/73kx2/ CSS 代码: .overlay{ backgroun
有什么方法可以隐藏状态栏并保持操作栏可见吗? 最佳答案 是的,有。您应该在 Activity 的 onCreate 方法中设置 FLAG_FULLSCREEN。 @Override public vo
我是一名优秀的程序员,十分优秀!