2012-05-10 6 views
2

GAEアプリケーションでGoogleアカウントの認証を有効にするには、Authenticating against App Engine from an Android appで説明したコードを使用しています。問題は、アンドロイドアプリがアカウントにアクセスできるようになると、同じアカウントを使用してプロセスをもう一度繰り返すことができなくなることです。私が試した:アンドロイドアプリのGoogleアカウントアクセス確認を元に戻す

  • invalidateAuthToken()
  • クリアデータ
  • は、そのアプリをアンインストール(設定=>アプリケーションを=>アプリケーションの管理)を

しかし、アプリはまだそのへのアクセスを得ていますアカウント。以下は、私が使用するコードスニペットです。ユーザーの確認のための意図を示しています。

private class GetAuthTokenCallback implements AccountManagerCallback<Bundle> { 
    public void run(AccountManagerFuture<Bundle> result) { 
     Bundle bundle; 
     try { 
      bundle = result.getResult(); 
      Intent intent = (Intent)bundle.get(AccountManager.KEY_INTENT); 
      if(intent != null) { 
       // User input required 
       startActivity(intent); 
      } else { 
       onGetAuthToken(bundle); 
      } 
     } catch (OperationCanceledException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (AuthenticatorException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
}; 

誰にも直面していますか?どのように次の実行に確認を強制する任意のアイデア?

答えて

1

これらのアクセス許可は、システムデータベースに保持されます。あなたのアプリはアンインストール後に削除する必要がありますが、アプリデータを消去しても効果はありません。動作していない場合はバグかもしれません。別のデバイスやエミュレータで試してください。おそらく動作する極端な対策は工場出荷時のリセットです:)

+0

私はこれらの質問にリンクしています* [[アクセス要求]ユーザーはすでにアクセスを許可していますか?](http://stackoverflow.com/questions/6852256/how-do-you-force-accountmanager-to-show-the-access-request-screen-after-a-user)* [アカウントマネージャのクレデンシャルアクセスからの不正アクセスとアプリケーション](http://stackoverflow.com/questions/8206036/unauthorize-and-app-from-accountmanager-credential-access)を参照してください。ありがとう – blue

+0

ルートデバイスを持っている(またはエミュレータで動作している)場合、グラントテーブルをクリアすると機能します。あなたはもう少し微妙になり、自分のアプリのエントリだけを削除することもできます。 –

0

私は方法クリーナーソリューションを見つけました。そして少し早く私は思う。

0)私はこの余分なステップが必要ではない(それを試していない)が、2つのステップを実行するだけで、2つのステップを実行する必要があります(下に1 & 2、詳細な手順が表示されます)とにかくそれです。アプリのPlusClientとの接続を解除するだけです。

mPlusClient.clearDefaultAccount(); 
mPlusClient.disconnect(); 

1)すべてでGoogle Play servicesアプリからのデータ消去は、あなたのデバイス上でSettingsから画面(またはダウンロード画面)アプリ。

2)ウェブ上のGoogleアカウントのPrivacyセクションのConnected applications and sites画面からアプリの許可を取り消します。

3)もう一度接続してください。今はうまくいくはずです。必要に応じて手順を繰り返します。

注:手順1と2が重要です。ステップ1だけを実行すると、通常どおりにあなたのアプリにログインし、トーストのメッセージを表示しますWelcome back to <app_name>. You're signed in as <account_name>

関連する問題