0

SenchaTouch2を使用してWebアプリケーションを構築します。iPhoneでは、アプリケーションを全画面で使用できます。

私はすでにPCブラウザ用のWebアプリケーションを構築しており、OAuth2に接続するGoogleカレンダーAPIを使用しています。

承認手順では、ユーザーのgoogleアカウントにログインするために新しいウィンドウを開く必要があります。

たぶん私はPCの同じアーキテクチャを使用してSenchaTouchアプリケーションを構築できますが、新しいウィンドウを開くとフルスクリーンアプリケーションが閉じます。

SenchaTouch2アプリケーションでgoogleOAuth2を使用する方法を知っていますか?

-2013/2/6を追加

私のSenchaTouch2アプリケーションは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は、ユーザーにとって3つのパターンです。

1.ユーザーのグーグルアカウントはログアウトです。ユーザーはユーザーIDとパスワードを入力する必要があります。

2.ユーザーのグーグルアカウントはログインしていますが、アプリケーションは許可されていません。ユーザーは「許可」ボタンをクリックする必要があります。

3.ユーザーのグーグルアカウントはログインです、ユーザーは何もする必要はありません。

3.のとき、iframeで認証できます。また、1。または2.の場合、フレーム内での承認ができないため、location.href変更アプローチを使用してください(詳細はhttp://miketheindian.com/2012/02/22/staying-in-full-screenをご覧ください)。 -mode-on-the-iphone-from-page-to-page /)。

詳細

makeビューにはコンテナがあります{xtype:'container'、html:'<iframe src = "" id = "googleLogin" style = "border:0;">'}、

コントローラのsrcを変更します

var iframe =  Ext.get(Ext.query('#googleLogin'));
iframe.set(
  {
    src: responseInformation.googleOAuthUrl
  });

3.の時、ユーザーグーグルアカウントログイン、これは大丈夫です。

1.または2の時刻になると、location.hrefを変更します。iframeの「onerror」イベントを処理したいのですが、そのイベントはありません。

settimerを使用して、iframeのsrcが最初のsrcに変更されていないかどうかを確認します(Googleログインページへのリダイレクトエラーのため)。

3000ミリ秒はそれほど意味がありません。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

Android では、ネットワーク経由で作業するのではなく、デバイス上のローカルの連絡先データベースを使用することをお勧めします。はい、ユーザーは許可を与える必要がありますが、とにかくネットワークアクセスのためにそうします. そうすれば、余分なブラウザーなどをスピンアウトする必要はありません。

于 2013-02-05T19:44:33.957 に答える
0

問題に直面する別の方法があります。

Cordova または Sencha の inAppBrowser プラグインを使用して認証プロンプトを起動し、eventListener を使用してページの読み込みを待ち、URL が成功のコールバック URL と一致する場合は、URL を解析して認証/コードまたは認証/トークンを取得できます。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 に答える