0

私はinappbrowser ionicを使って私のwebappのビューを作成しています。私は指示(http://sourcefreeze.com/cordova-inappbrowser-plugin-example-using-ionic-framework/)に従って、私は自分のデバイス(iphone 6s、ios 10.1.1)でアプリを走らせている。ここではGoogleのAPIを使用して、私のWebアプリケーションは、サービスInappbrowser ionicはOauthをロードしません

function GoogleDriveAuthentication($rootScope){ 

    this.authenticate = function(){ 
     gapi.load('client:auth2',authorize); 
    } 

    function authorize(){ 
     gapi.client.setApiKey($rootScope.API_KEY); 
     gapi.auth2.init({ 
      client_id: $rootScope.CLIENT_ID, 
      scope: $rootScope.SCOPES 
     }).then(function(authResult){ 
      var auth2 = gapi.auth2.getAuthInstance(); 
      var user = auth2.currentUser.get(); 
      if (user.isSignedIn()) { 
       afterSignInSuccess(); 
      } else { 
       auth2.signIn().then(afterSignInSuccess,afterSignInFailed); 
      } 
     }); 
    } 
    function afterSignInFailed(respond){ 
     console.log(respond); 
    } 

    function afterSignInSuccess(respond){ 
     console.log('authenticated successfully'); 
     var auth2 = gapi.auth2.getAuthInstance(); 
     var user = auth2.currentUser.get(); 
     var authResponse = user.getAuthResponse(); 
     $rootScope.accessToken = user.getAuthResponse().access_token; 
     $rootScope.authenticated = true; 
     gapi.client.load('drive', 'v3',function(){ 
      $rootScope.$broadcast('authenticated'); 
     });   
    } 
} 

されており、ここで私のapp.js

And when I run it in Inappbrowser, it's stuck like this

マイコルドバ - プラグイン

app.run(function($rootScope,$location,$route, GoogleDriveAuthentication,DTOptionsBuilder){ 

$rootScope.$on('$routeChangeSuccess', function(){ 
    document.title = "SuperProject - " + $route.current.title; 
    $('#superSearch').typeahead('val', ''); 
    if ($location.path() != "/register" && $location.path() != "/forgot"){ 
     if (!$rootScope.loggedin){ 
      console.log($rootScope.loggedin); 
      $location.path("/login"); 
     } 
     else if (!$rootScope.authenticated){ 
      console.log('authenticate'); 
      GooghleDriveAuthentication.authenticate(); 
     }    
    } 
    if ($location.path != '/home') { 
     $('#superSearch').blur(); 
    } 
}) 
の一部です:

cordova-plugin-console 1.0.4 "Console" 
cordova-plugin-device 1.1.3 "Device" 
cordova-plugin-inappbrowser 1.5.0 "InAppBrowser" 
cordova-plugin-splashscreen 4.0.0 "Splashscreen" 
cordova-plugin-statusbar 2.2.0 "StatusBar" 
cordova-plugin-whitelist 1.3.0 "Whitelist" 
ionic-plugin-keyboard 2.2.1 "Keyboard" 

このケースでは、Inappbrowserでいくつかの問題を引き起こすoauth2 v3を使用しました。再。 私のアプリに何が悪いと思いますか?すべてのヘルプは大歓迎されないであろう:) Googleはこのことについて、最近警告し

+0

グーグルは、もはやinappbrowserのoauthを許可していません –

+0

それを証明するリンクは、メイトですか? –

+0

はい、https://developers.googleblog.com/2016/08/modernizing-oauth-interactions-in-native-apps.html –

答えて

2

https://developers.googleblog.com/2016/08/modernizing-oauth-interactions-in-native-apps.html

をセキュリティ上の理由から、GoogleはもはやinAppBrowserを使用してトークンを取得できます。代わりに、Googleログインにcordovaプラグインを使用してください(例:https://github.com/EddyVerbruggen/cordova-plugin-googleplus)。これはAndroidのネイティブ方法を使用します。

ボーナスとして、Android搭載端末との統合性が向上します。初回使用時にメールとパスワードを入力する必要がなくなりました。

まだいくつかのアプリが動作する理由は、Googleが段階的にブロックしているためです。コンソールで作成された新しい認証情報はもはや機能しませんが、古い認証情報は機能しません。ある時点では、上記の最初のリンクは表示されません。

関連する問題