1. ホーム
  2. javascript

[解決済み] OAuth2を使ってGoogleにログインしたアプリケーションからログアウトするには?

2023-02-12 03:26:07

質問

私のアプリケーションでは、jsapiを使用してGoogleサインアウトを実装しています。

私は、URLの https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=xxxxxx を使用して Google に接続し、次に https://www.googleapis.com/plus/v1/people/xxxxxx でGoogleのプロファイルからユーザーデータを取得します。

アプリケーションからボタンをクリックすると、Googleからユーザーをサインアウトさせる必要があります。JavaScriptでこれをどのように実装すればよいでしょうか。少なくとも、ユーザーがサインインするたびにGoogleのログインページを尋ねる必要があります。

私は試してみました approval_prompt=force を試してみましたが、うまくいかないようです。

どのように解決するのですか?

OAuthの概要: ユーザーは彼/彼女が言うとおりの人物なのか?

Stack Overflowにログインする際に、"Login with Google"オプションのようにOAuthを使用したかどうかはわかりませんが、この機能を使用すると、Stack Overflowは単にあなたが誰であるかを知っているかどうかをGoogleに尋ねているのです。

"Yo Google, this Vinesh fella claims that [email protected] is him, is that true?"

すでにログインしている場合、Googleは「はい」と答えます。そうでない場合は、Googleは「YES」と答えます。

<ブロッククオート

ちょっと待ってください、Stack Overflow、この人を認証します。

Googleのパスワードを入力すると、GoogleはStack Overflowにあなたが本人であることを伝え、Stack Overflowはあなたをログインさせるのです。

アプリからログアウトするとき、あなたは をログアウトすることになります。 のアプリからログアウトします。

ここで、OAuthを初めて使う開発者は少し混乱することがあります...。Google と Stack Overflow、Assembla、Vinesh's-very-cool-slick-webapp、はすべて異なるエンティティであり、Google は Vinesh's cool webapp 上のあなたのアカウントについて何も知りませんし、逆に、あなたがプロファイル情報にアクセスするために使用している API を通じて公開されているものを除けば、Vinesh's cool webapp も同様です。

ユーザーがログアウトするとき、そのユーザーは Google からログアウトしているのではなく、あなたのアプリ、Stack Overflow、Assembla、またはユーザーを認証するために Google OAuth を使用する任意の Web アプリケーションからログアウトしているのです。

実際、私はすべての Google アカウントからログアウトしても、Stack Overflow にログインすることができます。アプリがユーザーが誰であるかを知れば、その人は Google からログアウトできます。Google はもはや必要ありません。

とはいえ、あなたがやろうとしていることは、本当にあなたのものではないサービスからユーザーをログアウトさせることです。このように考えてみてください。 ユーザーとして、Google アカウントで 5 つの異なるサービスにログインし、そのうちの 1 つから初めてログアウトしたときに、アプリ開発者が自分のアプリケーションからログアウトすると Google からもログアウトするように決めたため、自分の Gmail アカウントに再度ログインしなければならないとしたら、どれだけイライラすると思いますか? これでは、本当にすぐに飽きてしまいます。要するに、あなたは を実行しないでください。 ...

ええ、ええ、とにかく、私はまだユーザーをGoogleからログアウトしたいのですが、どうすればいいか教えてください。

とはいえ、もしあなたが まだ を行いたい場合、Google サービスのログアウト ボタンからログアウト URL を動的に作成し、img 要素または script タグを使用してそれを呼び出すことができます。

<script type="text/javascript" 
    src="https://mail.google.com/mail/u/0/?logout&hl=en" />

または

<img src="https://mail.google.com/mail/u/0/?logout&hl=en" />

または

window.location = "https://mail.google.com/mail/u/0/?logout&hl=en";

ユーザーをログアウトページにリダイレクトしたり、クロスドメイン制限されていない要素から呼び出したりすると、ユーザーは Google からログアウトされます。

からログアウトされるとは限らないことに注意してください。 からログアウトされるわけではありません。 アプリケーションからログアウトするわけではありません。)

概要を説明します。

覚えておいていただきたいのは、アプリからログアウトするとき、ユーザーにパスワードを再入力させる必要はないということです。そこがポイントです! Googleに対して認証を行うので、ユーザーが使用する各ウェブアプリケーションで何度も何度もパスワードを入力する必要がないのです。慣れるまで少し時間がかかりますが、ユーザーがGoogleにログインしている限り、あなたのアプリケーションは、そのユーザーが本人であるかどうかを心配する必要がないことを知っておいてください。

私もあるプロジェクトであなたと同じ実装をしています。OAuthでGoogleのプロファイル情報を使っています。私はあなたが試したいと思っていることと全く同じことを試しました。そして、Googleに何度もログインしなければならないのは本当に人々を怒らせるようになったので、Googleからログアウトするのをやめました。)