アップデート
自動サインインを防ぐためにサポートされている最善の方法は、gapi.auth2.getAuthInstance().signOut()
呼び出された後にサイトで自動サインインを防ぐAPIメソッドを使用することです。 ここでデモ。
デモでは、次のコードに示すように、ユーザーがページを離れるときにサインアウトします。
window.onbeforeunload = function(e){
gapi.auth2.getAuthInstance().signOut();
};
これで、ユーザーがサイトを終了するたびに(たとえば、ウィンドウを閉じたり、移動したり)、ユーザーはサインアウトされ、ユーザーがクリックするまでサインインボタンはサインインをトリガーしません。
独自の実装でこれを行うことはお勧めしませんが、代わりに、ユーザーがサインインしたくないときに明示的にサインアウトできるようにします。また、私の例はデモであり、おそらくサインインしたくないことに注意してください。ユーザーがサイトを離れるたびに、ユーザーは自動的に退出します。
元の投稿
まず、data-approvalprompt = "force"を使用しないでください。これにより、追加の承認済みサブトークンがアプリケーション/クライアントに発行され、資格情報が失われた後にユーザーを再承認する必要があるシナリオで使用するように設計されています。 -側。
次に、ユーザーが既にGoogleアカウントに「サインイン」していて、再度サインイン(またはサインインをトリガー)する必要があるため、ユーザーがクリックしてサインインする必要がある動作をしたくない場合があります。 、個別に、あなたのサイトのために。
本当にこれを実行したい場合は、サインインボタンに対して明示的なレンダリングを実行しますが、ユーザーが自動的に取得しないことに気付くまで、 Google+サインインドキュメントに記載されているようにgapi.signin.renderを呼び出しません。サインインしました。
次のコードは、サインインボタンの明示的なレンダリングを有効にする方法を示しています。
<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
{"parsetags": "explicit"}
</script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<head>
<script type="text/javascript">
var token = "";
function onSigninCallbackVanilla(authResponse){
// in a typical flow, you show disconnect here and hide the sign-in button
}
次のコードは、ボタンを明示的にレンダリングする方法を示しています。
<span id="signinButton">
<button id = "shim" onclick="gapi.signin.go(); $('#shim').hide();">Show the button</button>
<span
class="g-signin"
data-callback="onSigninCallbackVanilla"
data-clientid="YOUR_CLIENT_ID"
data-cookiepolicy="single_host_origin"
data-requestvisibleactions="http://schemas.google.com/AddActivity"
data-scope="https://www.googleapis.com/auth/plus.login">
</span>
</span>
ユーザーがサイトからサインアウトしていることを伝える方法は、サイトごとに異なる可能性がありますが、1つのアプローチは、ユーザーの「サインアウト」状態を示すCookieを設定し、これをトリガーとして使用することです。明示的なロードをブロックするため。ユーザーがサイトにアクセスしてCookieを無効にしたり、別のサインインしたブラウザーを使用したりすると、動作が少し難しくなります。これに対処するには、サインインコールバックでXHRを介してサーバーからユーザーの状態をクエリし、ユーザーがGoogle+にサインインしていることを知らないふりをするなどの複雑な操作を行うことができます。