navigator.id.watch

非標準
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: 'bob@example.org',
  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 "foo@example.com" onlogin()
undefined "foo@example.com" onlogin()
"bar@example.com" "foo@example.com" onlogin()
"foo@example.com" "foo@example.com" none
null null none
"foo@example.com" null onlogout()
undefined null onlogout()
ページが読み込まれた時に Persona が自動的に呼び出すのは onloginonlogoutどちらか であることに注意してください。両方 呼ばれることはありません(訳注:表のとおりどちらも呼ばれないことはある)。loggedInUserfoo@example.com がセットされているのに、Persona が bar@example.com がログインしていると認識している場合、onlogin のみが呼び出されます。この場合、第1引数として bar@example.com のアサーションが渡されます。
onlogin
ユーザがログインした時に、1 個の引数としてアサーションが渡され、呼び出される関数。この関数は、検証のためにアサーションをサイトのバックエンドに送信します。検証が成功した場合、バックエンドでユーザのセッションを確立し、この関数内で UI (ログインボタン) を適切なものに更新してください。
onlogout Optional
ユーザがログアウトした時に、引数なしで呼び出される関数。この関数で、サイトのバックエンドを呼び出すかユーザをリダイレクトすることにより、ユーザのセッションを破棄してください。
onlogout が与えられなかったとき Observer API によるセッション管理は無効化されます。onreadyonlogin だけが呼び出されます。onlogin は、ユーザーによるログイン操作の反応としてしか呼び出されません(つまりユーザーがログインしていた場合に自動的に呼び出されたりはしません)。
onready Optional
A function that will be invoked when the user agent is initialized and able to process calls to id.request and id.logout. The onready callback will be invoked immediately after any automatic invocations of onlogin, onlogout, or onmatch. By waiting to display UI until onready 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 to id.request or id.logout. It is the punctuation mark that concludes the conversation started by watch.

コード例

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); }
    });
  }

});

仕様

まだどの仕様書にも含まれていません。

関連情報

ドキュメントのタグと貢献者

タグ: 
 このページの貢献者: Fajrovulpo, fscholz, AshfaqHossain, ethertank, Marsf
 最終更新者: Fajrovulpo,