[解決済み] OAuth2を使ってGoogleにログインしたアプリケーションからログアウトするには?
質問
私のアプリケーションでは、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からログアウトするのをやめました。)
関連
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み] jQueryでページを更新するにはどうすればよいですか?
-
[解決済み] JavaScriptでカンマを桁区切りにして数値を表示する方法
-
[解決済み] 文字列がすべて同じ部分文字列で構成されているかどうかを調べるにはどうすればよいですか?
-
[解決済み] JavaScriptを使用してHTML要素に属性を追加/更新するには?
-
[解決済み] react-routerのハッシュフラグメントからクエリパラメータを取得する
-
[解決済み] JavaScript のオブジェクトの配列を比較し、最小値/最大値を取得する
-
[解決済み] JavaScriptで長い配列を小さい配列に分割する方法
-
[解決済み] HTML要素にスクロールバーがあるかどうかをチェックする
-
[解決済み] Chrome拡張機能:popup.htmlを強制終了させる
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Node.jsでbase64エンコードされた画像をAmazon S3へアップロードする
-
[解決済み] モバイルWeb HTML5フレームワークの選び方【終了しました
-
[解決済み] URL/アドレスバーからJavascriptの関数を呼び出す
-
[解決済み] 兄弟ノードを選択する方法はありますか?
-
[解決済み] Reactコンポーネントでthis.setStateを複数回使用するとどうなりますか?
-
[解決済み] jqueryはjavascriptのライブラリなのかフレームワークなのか?[クローズド]
-
[解決済み] イテレータでmap()を使用する
-
[解決済み] JavaScript で css プロパティを使用して HTML 要素の背景色を設定する方法
-
[解決済み] Chrome拡張機能:popup.htmlを強制終了させる
-
[解決済み] JavaScriptでDIVを表示・非表示にするには?