5

私は完全にオフラインで動作するプライベート アプリを持っています (つまり、サーバー データを送受信しません) が、電話で有効な Google アカウントを持つユーザーのみに制限する必要があります。電話アカウントのリストを反復することで、電話に適切なアカウントがあることを確認できますが、完全な OAuth プロセスを導入しなくても、アカウントが有効/認証されていることを確認することは可能ですか? Cookie を取得したり、サーバーにデータを送信したりする必要はありません。

理想的には、次のようなことをしたいと思います。 1. アカウント マネージャーに認証トークンを確認します。2. トークンを受け取ったら、アプリへのアクセスを許可します。現在、アカウント マネージャーを介したチェックがなければ、誰でも電話で偽のアカウントを作成し、メールやパスワードを入力してもアクセスでき、認証されることはありません。

これを明確に説明できたことを願っています。私のアプリにはネットワーク接続がないため、独自のネットワーク/oauth チェックを追加することは避けたいと考えています。

4

2 に答える 2

5

これはどうですか:

AccountManager manager = AccountManager.get(this);
Account[] accounts = manager.getAccountsByType("com.google");
final boolean connected = accounts != null && accounts.length > 0;

接続されたブール値は、電話に接続された Google アカウントがあるかどうかを示します。

実際、トークンのチェックはありませんが、アカウントが電話で登録されている場合、Google は以前にサーバー側でそれをチェックして検証しました...

于 2014-04-10T14:31:43.847 に答える
2

Google Plus ログイン API を実装してみませんか?実際には OAuth の上に構築されていても、G+ はかなり単純であるため、完全な OAuth プロセスを実際にセットアップするわけではありません。

オンライン アクセスも必要としない開発中のアプリでそれを使用します (最初の G+ ログイン アクセスを除く)。

私がやっていることは、アプリを初めて実行するときに G+ ログイン ボタンを提示することです。ユーザーがそれをクリックすると、アプリからのアクセス許可要求を受け入れることができます (ユーザーの電子メールといくつかの基本的なプロファイル情報を取得できるようにするため、つまり最小限のアクセス許可が必要です)。API クライアントが正しく接続されている場合は、ユーザーにダッシュボードまたはホームを提示します。また、既に承認されているユーザーに関するフラグを SharedPreferences に設定します。

このようにして、ユーザーが次にアプリを起動したときに、既に承認されていることを認識し、API クライアントに接続を要求するだけです (アカウントの Play ストア Web サイトからアクセスが取り消された場合にのみ、ユーザーが再確認する必要があります)。 auth は引き続き有効です)、すべてが機能するはずです。ユーザーが自分のアプリから自分の G+ プロファイルへのアクセスを取り消した場合、フラグをクリアして、ユーザーが次回実行したときに再度承認を求めるようにします。

それは実際には非常にシンプルで、少なくとも私のユースケース(あなたのユースケースと非常に似ています)では、ユーザーの介入を最小限に抑えて機能します。

このGoogle Plusログインチュートリアルのようなものを試してみることを強くお勧めします

編集: Google Plus機能を必要とする複数のアクティビティの操作について、以前に尋ねたこの質問を確認することもできます

また、この方法では、Google のサーバーでその有効性を直接確認しているため、ユーザー アカウントが常に有効であることを常に確認できます。

于 2014-04-14T15:30:12.707 に答える