2017-04-21 20 views
1

GoogleのOAuth2経由で複数のアカウントを認証しました。私が認可したアカウントの一覧を入手するにはどうすればよいですか?私はアクセスを取り消すことができるようにしたい。Google OAuth2認証アカウントを取得する

これを明確にするために、別のアカウントを選択するたびにOAuth2フローを複数回実行します。次に、アクセス/リフレッシュトークンを取得し、データベースに保存します。これを行うことで、最新のアカウントに結びついていないリソースだけでなく、以前に承認されたアカウントに結びついているリソースにもアクセスできることに気付きました。ユーザーがリストに登録して、これらのアカウントへのアクセスを取り消すことができるようにしたい。

+0

「アクセス/リフレッシュトークンを取得してデータベースに保存する」と言ったら、すべてのリフレッシュトークンを保存していますか?またはあなたは一部を救って他の人を捨てていますか?あなたの質問には後者が含まれていますが、なぜ認可を要求してからトークンを保存しないのかが分かりません。 – pinoyyid

+0

@pinoyyidすべてのユーザーには独自のトークンがあります。 OAuth2認証を実行するたびに、新しいトークンが既存のトークンを上書きします。いくつかのリソースは複数のトークンによってアクセス可能であるように思われるが、私は混乱している。私はそれが私の問題かAPI(GMB API)がそのように設計されているかどうかはわかりません。私もここに投稿しました:https://www.en.advertisercommunity.com/t5/Google-My-Business-API/Designing-application-for-multiple-users/td-p/1121514 –

+0

あなたは「トークン」を意味します。 Google Oauthには、リフレッシュトークンとアクセストークンがあります。これらは異なる目的と特性を持っています。質問を編集して、保存しているトークンを特定することを提案できますか?また、「ユーザー」と「アカウント」の意味を明確にしてください。 Googleでは、user = accountですが、ユーザーには複数のアカウントがあるようです。繰り返しますが、あなたがあなたの質問にもっと情報を加えることができれば、あなたが求めていることは明らかです。 – pinoyyid

答えて

0

アプリケーションを認証したユーザーのリストを取得する方法はありません。私はまだ私のアプリケーションの非常に古いバージョンを使用している多くのユーザーがいるので、私はこれらの問題を抱えています。既知のユーザーのアクセスを取り消す

:あなたはそれを認可したいと

あなたのアプリケーションは、多くのユーザーを持つことができます。リフレッシュトークンを使用すると、各ユーザーデータにアクセスできます。ユーザーがトークンを取り消すか、リフレッシュトークンが6か月間使用されなくなるまで、アクセスは維持されます。

あなたは使用してみてくださいrevoking the token

でprogrammaticlyそれを取り消すことができます:

$client->revokeToken(); 

これは、ユーザによって与えられた古いアクセスを取り消す必要があります。もちろん、古いリフレッシュトークンをクライアントにロードする必要があります。

+0

あなたの答えは、私がトークン全体を取り消すことしかできないことを示唆しているようです。明確にするために、私が求めていること:私のアプリケーションのユーザ(単一のトークンを保持する)は、複数のGoogleアカウントを持つOAuth2を経由することができ、複数のアカウントを持つさまざまなサービスへのアクセスを「許可」します。しかし、私は、このトークンに結びついたいくつかのGoogleアカウントを選択的に「認証解除する」ことができるようにしたい。それは不可能ですか? –

+0

ユーザーがアプリケーションを認証すると、そのユーザーは1つのGoogleアカウントになります。各Googleアカウントには、更新トークンが割り当てられます(実際には、1人のユーザーに複数の未処理の更新トークンが存在する可能性があります)。それを取り消すにはリフレッシュトークンが必要です。実際のGoogleアカウントではありません。あなたがしたいことは、異なるGoogleアカウントの更新トークンを追跡しない限り、おそらく不可能です。 – DaImTo

+0

彼のトークンが1つのGoogleアカウントに結びついていることを明確にする。 – DaImTo

関連する問題