1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
---
title: IdentityManager.watch()
slug: Web/API/IdentityManager/watch
translation_of: Archive/IdentityManager/watch
---
<p>{{ ApiRef("Persona") }}</p>
<div class="note"><strong>注意:</strong> 不是所有的浏览器都支持这项功能. 使用 Persona 的网站必须在他们的页面中包含 <a href="https://login.persona.org/include.js" title="https://login.persona.org/include.js">polyfill library</a> .</div>
<h3 id="Summary" name="Summary">概要</h3>
<p>This function registers callbacks that respond to a <a href="/en-US/docs/BrowserID" title="BrowserID">Persona</a> user logging in or out.</p>
<h3 id="Syntax" name="Syntax">语法</h3>
<pre class="brush:js;">navigator.id.watch({
loggedInUser: 'bob@example.org',
onlogin: function(assertion) {
// A user has logged in! Here you need to:
// 1. Send the assertion to your backend for verification and to create a session.
// 2. Update your UI.
},
onlogout: function() {
// A user has logged out! Here you need to:
// Tear down the user's session by redirecting the user or making a call to your backend.
}
});
</pre>
<h4 id="参数">参数</h4>
<dl>
<dt><code>loggedInUser </code>{{ optional_inline() }}</dt>
<dd><strong>NOTE: </strong>This parameter was renamed from <code>loggedInEmail</code> in early September. Both names will continue to work for the time being, but code <strong>should</strong> be changed to use <code>loggedInUser</code> instead.</dd>
<dd>The email address of the currently logged in user. This should be a string containing the user's email address if the website believes that a user is currently logged in, or <code>null</code> otherwise. If the website is unsure, this should be set to <code>undefined</code> or omitted.</dd>
<dd>Persona compares its knowledge of the local user to the value of <code>loggedInUser</code> to determine which callback—<code>onlogin</code>, <code>onlogout</code>, or none at all—to automatically invoke when your page loads. If <code>loggedInUser</code> is <code>undefined</code> or omitted, Persona <em>will</em> invoke either <code>onlogin</code> or <code>onlogout</code>, depending on whether or not a local user should be logged in to your site. These callbacks are not invoked automatically if both BrowserID and <code>loggedInUser</code> agree on the local user's state.</dd>
<dd>Note that Persona may automatically call <em>either</em> <code>onlogin</code> or <code>onlogout</code> when your page loads, but not <em>both</em>. If <code>loggedInUser</code> is set to <code><span class="link-mailto">foo@example.com</span></code>, but Persona believes <code><span class="link-mailto">bar@example.com</span></code> should be logged in, only <code>onlogin</code> will be called. It will have an assertion for <code><span class="link-mailto">bar@example.com</span></code> as its first parameter.</dd>
<dt><code>onlogin</code></dt>
<dd>A function which will be invoked and passed a single argument, an assertion, when the user logs in. This function should send the assertion to the site's backend for verification. If verification succeeds, the backend should establish a session for the user and the function should update the UI as appropriate.</dd>
<dt><code>onlogout</code></dt>
<dd>A function that will be invoked, without any arguments, when the user logs out. This should tear down the user's session by making a call to the site's backend, or by redirecting the user.</dd>
</dl>
<h3 id="Example" name="Example">示例</h3>
<p>需要示例.</p>
<h3 id="Specification" name="Specification">技术规范</h3>
<p>没有包含在任何技术规范中.</p>
<h3 id="查看其它内容">查看其它内容</h3>
<ul>
<li><a href="/en/BrowserID" title="BrowserID">BrowserID</a></li>
<li>{{domxref("navigator.id")}}</li>
<li>{{domxref("navigator.id.logout()")}}</li>
<li>{{domxref("navigator.id.request()")}}</li>
</ul>
|