我使用 Sencha Touch2 构建 Web 应用程序。在 iPhone 上,应用程序可以全屏使用。
我已经为 PC 浏览器构建了 Web 应用程序,并使用谷歌日历 API 与 OAuth2 连接。
授权步骤需要打开新窗口以登录用户谷歌帐户。
也许我可以使用与 pc 相同的架构构建 Sencha Touch 应用程序,但打开新窗口会使全屏应用程序关闭。
你知道如何在 Sencha Touch2 应用程序中使用 google OAuth2 吗?
-- 添加 2013/2/6
我的 Sencha Touch2 应用程序是 Web 应用程序。我想知道可以在全屏 Web 应用程序中授予权限,而不是在浏览器中。
-- 添加 2013/2/7
我用小费。 http://miketheindian.com/2012/02/22/staying-in-full-screen-mode-on-the-iphone-from-page-to-page/
这种方式不需要打开浏览器。这比打开新窗口要好,但最好是在 iframe 中授权...
-- 添加2013/2/13 最后,我带路;
Google AOuth 是三种模式,供用户使用。
1.用户google账号退出,用户必须填写用户名和密码。
2.用户谷歌账号登录,但应用程序不被允许,用户必须点击“允许”按钮。
3.用户谷歌账号登录,用户不需要做任何事情。
3.的时候,我们可以在iframe中进行授权。并且,当 1. 或 2. 的时候,我们无法在 frame 中授权,所以使用 location.href 更改方法(详情在http://miketheindian.com/2012/02/22/staying-in-full-screen -mode-on-the-iphone-from-page-to-page/)。
细节
make view 有容器 { xtype: 'container', html: '<iframe src="" id="googleLogin" style="border:0;">' },
更改控制器中的 src
var iframe = Ext.get(Ext.query('#googleLogin'));
iframe.set(
{
src: responseInformation.googleOAuthUrl
});
3.的时候,用户google账号登录,就OK了。
当 1. 或 2. 的时候,我们改变 location.href。我们想处理 iframe “onerror” 事件,但没有那个事件。
我使用 settimer 并检查 iframe 的 src 是否没有更改第一个 src(因为错误重定向到谷歌登录页面)。
3000 ms 没有那么大的意义。3.的时候,重定向成功,页面发生变化。
me.timerId = setInterval(function(){
if (iframe.el.dom.src.indexOf( /* first url */'') !== -1){
location.href = iframe.el.dom.src;
clearInterval(me.timerId);
}
}, 3000);