0

我使用 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);
4

2 回答 2

0

还有另一种方法可以解决这个问题:

使用 Cordova 或 Sencha 的 inAppBrowser 插件启动 auth prompt,然后使用 eventListener 等待页面加载,如果 url 与成功回调 URL 匹配,则可以解析 url 并获取 auth/code 或 auth/token。使用 Cordova 的示例:

window.authmodal = window.open(authorizationUrl, '_blank', 'location=yes');
window.authmodal.addEventListener('loadstart', function(event){
  var code = getParam(event.url,"code");
    if(code != null){
      //here we got the code, now make a last request to get the TOKEN
      OAuth2Helper.finish(function(token){
        window.authmodal.close();
        window.localStorage.setItem("token",token)
        //do somethink else with your logic
      },code)   
    }else{
      //no code found in this page start.
    }

});

注意:OAuth2Helper.finish 使用代码向令牌 url 发出请求,以获得有效且可用的令牌。

于 2014-04-23T16:33:35.203 回答
0

在 Android 上,使用设备上的本地联系人数据库而不是通过网络工作可能是个好主意。是的,用户必须授予权限,但无论如何他们都会访问网络。这样你就不需要旋转任何额外的浏览器或任何东西。

于 2013-02-05T19:44:33.957 回答