8

Eclipseを使用してテストアプリを作成authTokenし、デバイス上のGoogle電子メールアカウントの1つから取得しました。

これを実行すると、[アクセスの許可]ダイアログが表示され、[アクセスの許可]を押します。

accountManager.getAuthToken(account,"oauth2:https://www.googleapis.com/auth/userinfo.profile", false, new GetAuthTokenCallback(), null);

API8以降で機能するチューザーダイアログを作成したかったのですが、ユーザーはアクセスを許可するGoogleアカウントを選択できます。これを行うには、画面を再度表示するためのアクセス許可を取り消す必要があります。

このページにテストアプリを表示する必要がありますか?
Googleアカウントへの許可されたアクセス

権限を取り消す方法を探していますが、機能していません。
機能しているのは、新しいアプリプロジェクトを作成することだけです。

UPDATE 2013
Google PlayサービスGCMを使用しており、これは正常に機能しています

4

3 に答える 3

8

[ Googleアカウントへの許可されたアクセス]ページについては、この権限は携帯電話のデータベースに保存されているデバイスのローカル権限であるため、アプリは表示されません。

この許可を簡単に取り消すことはできないようです。ダイアログを再度トリガーできるようにする方法をいくつか見つけることができましたが、どれも理想的ではありません。これらのソリューションの一部では、表示されるダイアログとまったく同じではありませんが、実行する内容によっては、テスト目的に十分近い場合があります。

内部的に、このgetAuthTokenメソッドは、アプリケーションのUIDを使用してアクセスが許可されているかどうかを追跡します。したがって、Androidにアプリに新しいUIDを与えるように強制したり、指定された許可のデータベースをクリアするように強制したりできる場合は、ダイアログが再度表示されます。他の人が彼らのために働くと言うが、それは私にとってはうまくいかないいくつかの解決策があります(多分それはあなたが使用する電話に依存しますか?):

補足として、Google認証トークンにアクセスするためのアクセス許可を取り消すには、アクセスを取り消すための内部Androidメソッドがありますが、これらはパブリックAPIを介してアクセスできません。

于 2012-11-28T09:15:13.567 に答える
2

考慮しなければならない2つのケースがあります。

  1. サーバー側認証
  2. Androidアカウントマネージャー(デバイス側)認証

ケース1:Googleアカウントのサーバー側の失効は、 https://accounts.google.com/IssuedAuthSubTokensで実行できます。

対応するGoogleアカウントでログインし、アプリ/ウェブサイトを取り消すことを選択する必要があります

ケース2:Androidデバイスで、「アプリケーションがGoogleアカウントにアクセスしようとしています...許可/拒否しますか?」のような画面が表示された場合、これはsqlite3を変更する必要があるアカウントマネージャータイプの認証です。アプリケーションを取り消すための携帯電話のデータベース(ケース1ほど簡単ではなく、これには携帯電話へのルートアクセスが必要です):

私。まず、データベースとジャーナルファイル(accounts.dbとaccounts.db-journal)を別の場所(SDカードまたはコンピューターなど)にコピーします。データベースファイルは、Androidデバイスの次のディレクトリにあります。

/data/system/users/0/accounts.db
/data/system/users/0/accounts.db-journal

ii。ここで、sqlite3エディターが必要です。GooglePlayストアのSqliteDebuggerを使用しました。または、 http: //www.sqlite.org/download.htmlのsqlite3バイナリを使用して、コンピューターでこれを実行することもできます。

iii。あなたは、accounts.dbデータベースの「extras」テーブルの特定のエントリを削除するためにエディタを使用する必要があることを知っています。sqliteコマンドの簡単なチュートリアルを受講することをお勧めしますが、ここにいくつかの例があり、「SqliteDebugger」を使用すると簡単に学ぶことができます。

まず、エディターでaccounts.dbファイルを開きます

テーブル「extras」のすべての行を一覧表示するには、次のコマンドを使用できます。

SELECT * from extras

取り消すアプリケーションに対応するテーブル「extras」の行のみをリストすることをお勧めします。たとえば、「com.someapp」がアプリの名前である場合、次のコマンドを使用できます。

SELECT * from extras WHERE key like '%com.someapp%'

次のような出力が得られるはずです。

id|accountsid|key|value
10|1|perm.xxxxxxxxxxxxxxxxxxxxxxxxxxx.oauth2:https://google.com/|1
11|1|EXP:xxxxxxxxxxxxxxxxxxxxxxxxxxxx.oauth2:https://google.com/|xxxxxxx

上記の出力から削除するID番号(つまり、取り消すアプリに対応する行)をメモしてから、次のコマンドを使用してそれらの行を削除します。

DELETE from extras where _id = 10
DELETE from extras where _id = 11

データベースとジャーナルファイルを元の場所にコピーして戻します。権限と所有権を元に戻していることを確認してください。所有者とグループのみの読み取り/書き込み、および所有者とグループの所有者は両方とも「システム」です。この操作にはrootアクセスが必要です!

デバイスを再起動すると、アプリの権限が取り消されているはずです。アプリに承認を再度リクエストするように依頼することで、これをテストできます。アプリを承認するように求める画面が表示された場合(「アプリケーションがGoogleアカウントにアクセスしようとしています...許可/拒否しますか?」)、アプリは正常に取り消されています。

参照:

  1. https://groups.google.com/forum/#!topic/android-developers/3lQb83jeyE8
  2. https://github.com/jberkel/sms-backup-plus/issues/369
于 2014-01-28T06:20:01.360 に答える
1

デバイスをアンインストールして再起動することが答えでした。
再起動する前に少し時間をとらなければなりませんでした。

更新..これはたまにしか機能しないと言わなければなりません。

于 2012-11-28T06:18:28.737 に答える