非標準
This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.
注記: この機能は、まだどのブラウザでもサポートされていません。Persona を使用する Web サイトは、そのページに ポリフィルライブラリ を含めなければなりません。
概要
この関数は、Persona ユーザのログインとログアウトに応答するコールバックを登録します。
構文
navigator.id.watch({ loggedInUser: '[email protected]', onlogin: function(assertion) { // ユーザがログインしました! ここで必要なことは: // 1. 検証とセッション作成のためのアサーションをバックエンドに送信する。 // 2. UI を更新する。 }, onlogout: function() { // ユーザがログアウトしました! ここで必要なことは: // リダイレクトするかバックエンドの呼び出しを行って、ユーザのセッションを破棄する。 } });
引数
loggedInUser
Optional- このパラメーターはユーザーの状態がどうなっているはずであるかを Persona に伝えるものです。値は文字列か
null
あるいはundefined
です。 - 文字列はユーザーがサイトに現在ログインしているはずであることを表します。この文字列はそのユーザーの E-mail アドレスであって,大文字/小文字は区別します。null は誰もログインしていないはずであることを表します。このパラメーターを省略するか,あるいは undefined を与えるのは,ユーザーがログインしているか否か不明であることを意味します。
- Persona は常に,ユーザーはサイトにログインしたいか,あるいはしたくないのだと考えています。Persona は loggedInUser の値を自らの信ずるところ(訳注:Persona が認識しているユーザー)と比較し,この二つの状態を一致させるため,(以下の表のごとくに)適切な関数を呼び出します:
-
loggedInUser Persona's State Callback null
"[email protected]" onlogin()
undefined
"[email protected]" onlogin()
"[email protected]" "[email protected]" onlogin()
"[email protected]" "[email protected]" none null
null
none "[email protected]" null
onlogout()
undefined
null
onlogout()
- ページが読み込まれた時に Persona が自動的に呼び出すのは
onlogin
とonlogout
の どちらか であることに注意してください。両方 呼ばれることはありません(訳注:表のとおりどちらも呼ばれないことはある)。loggedInUser
に[email protected]
がセットされているのに、Persona が[email protected]
がログインしていると認識している場合、onlogin
のみが呼び出されます。この場合、第1引数として[email protected]
のアサーションが渡されます。 onlogin
- ユーザがログインした時に、1 個の引数としてアサーションが渡され、呼び出される関数。この関数は、検証のためにアサーションをサイトのバックエンドに送信します。検証が成功した場合、バックエンドでユーザのセッションを確立し、この関数内で UI (ログインボタン) を適切なものに更新してください。
onlogout
Optional- ユーザがログアウトした時に、引数なしで呼び出される関数。この関数で、サイトのバックエンドを呼び出すかユーザをリダイレクトすることにより、ユーザのセッションを破棄してください。
onlogout
が与えられなかったとき Observer API によるセッション管理は無効化されます。onready
とonlogin
だけが呼び出されます。onlogin
は、ユーザーによるログイン操作の反応としてしか呼び出されません(つまりユーザーがログインしていた場合に自動的に呼び出されたりはしません)。onready
Optional- A function that will be invoked when the user agent is initialized and able to process calls to
id.request
andid.logout
. The onready callback will be invoked immediately after any automatic invocations ofonlogin
,onlogout
, oronmatch
. By waiting to display UI untilonready
is called, relying parties can avoid UI flicker in cases where the user agent's preferred state is out of sync with the site's session. - Note that
onready
will not be invoked after calls toid.request
orid.logout
. It is the punctuation mark that concludes the conversation started bywatch
.
コード例
navigator.id.watch({
loggedInUser: currentUser, // This is email of current user logged into your site
onlogin: function(assertion) {
$.ajax({ // This example uses jQuery, but you can use whatever you'd like
type: 'POST',
url: '/auth/login', // This is a URL on your website.
data: {assertion: assertion}
success: function(res, status, xhr) { window.location.reload(); },
error: function(xhr, status, err) {
navigator.id.logout();
alert("Login failure: " + err);
}
});
},
onlogout: function() {
$.ajax({
type: 'POST',
url: '/auth/logout', // This is a URL on your website.
success: function(res, status, xhr) { window.location.reload(); },
error: function(xhr, status, err) { alert("Logout failure: " + err); }
});
}
});
仕様
まだどの仕様書にも含まれていません。