<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wikivg.spaghett.dev/index.php?action=history&amp;feed=atom&amp;title=Zh%3AAuthentication</id>
	<title>Zh:Authentication - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wikivg.spaghett.dev/index.php?action=history&amp;feed=atom&amp;title=Zh%3AAuthentication"/>
	<link rel="alternate" type="text/html" href="https://wikivg.spaghett.dev/index.php?title=Zh:Authentication&amp;action=history"/>
	<updated>2026-04-06T01:23:38Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wikivg.spaghett.dev/index.php?title=Zh:Authentication&amp;diff=10392&amp;oldid=prev</id>
		<title>imported&gt;Kaniol at 09:30, 11 November 2019</title>
		<link rel="alternate" type="text/html" href="https://wikivg.spaghett.dev/index.php?title=Zh:Authentication&amp;diff=10392&amp;oldid=prev"/>
		<updated>2019-11-11T09:30:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 09:30, 11 November 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Minecraft 1.6引入了一种全新的叫作&#039;&#039;&#039;Yggdrasil&#039;&#039;&#039;的认证方案，它彻底地取代了[[ZH:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;旧版认证&lt;/del&gt;|先前的认证系统]]。Mojang的其他游戏，Scrolls，同样也使用了该认证方法。Mojang曾经说过[https://twitter.com/KrisJelbring/status/453573406341206016 每个人都应使用此认证系统来进行自定义登录]，但是[https://twitter.com/KrisJelbring/status/461390585086361600 永远不会从用户收集凭据]。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Minecraft 1.6引入了一种全新的叫作&#039;&#039;&#039;Yggdrasil&#039;&#039;&#039;的认证方案，它彻底地取代了[[ZH:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Legacy Authentication&lt;/ins&gt;|先前的认证系统]]。Mojang的其他游戏，Scrolls，同样也使用了该认证方法。Mojang曾经说过[https://twitter.com/KrisJelbring/status/453573406341206016 每个人都应使用此认证系统来进行自定义登录]，但是[https://twitter.com/KrisJelbring/status/461390585086361600 永远不会从用户收集凭据]。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 请求格式 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 请求格式 ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>imported&gt;Kaniol</name></author>
	</entry>
	<entry>
		<id>https://wikivg.spaghett.dev/index.php?title=Zh:Authentication&amp;diff=10391&amp;oldid=prev</id>
		<title>imported&gt;Kaniol: 暴力更新不可取</title>
		<link rel="alternate" type="text/html" href="https://wikivg.spaghett.dev/index.php?title=Zh:Authentication&amp;diff=10391&amp;oldid=prev"/>
		<updated>2019-11-11T09:30:03Z</updated>

		<summary type="html">&lt;p&gt;暴力更新不可取&lt;/p&gt;
&lt;a href=&quot;https://wikivg.spaghett.dev/index.php?title=Zh:Authentication&amp;amp;diff=10391&amp;amp;oldid=10390&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>imported&gt;Kaniol</name></author>
	</entry>
	<entry>
		<id>https://wikivg.spaghett.dev/index.php?title=Zh:Authentication&amp;diff=10390&amp;oldid=prev</id>
		<title>imported&gt;Hempflower: /* 错误 */</title>
		<link rel="alternate" type="text/html" href="https://wikivg.spaghett.dev/index.php?title=Zh:Authentication&amp;diff=10390&amp;oldid=prev"/>
		<updated>2019-11-06T02:20:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;错误&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 02:20, 6 November 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l43&quot;&gt;Line 43:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 43:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  |-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  |-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  | &amp;lt;code&amp;gt;Method Not Allowed&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  | &amp;lt;code&amp;gt;Method Not Allowed&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; |&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  | 请求所使用的方法不允许访问当前URI，这里通常是由于非POST方法引起的。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  | 请求所使用的方法不允许访问当前URI，这里通常是由于非POST方法引起的。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; |&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  |-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  |-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  | &amp;lt;code&amp;gt;Not Found&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  | &amp;lt;code&amp;gt;Not Found&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  |&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  |&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  | 服务器没有找到URI所对应的资源&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  | 服务器没有找到URI所对应的资源&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; |&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  |-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  |-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  | &amp;lt;code&amp;gt;ForbiddenOperationException&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  | &amp;lt;code&amp;gt;ForbiddenOperationException&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>imported&gt;Hempflower</name></author>
	</entry>
	<entry>
		<id>https://wikivg.spaghett.dev/index.php?title=Zh:Authentication&amp;diff=10389&amp;oldid=prev</id>
		<title>imported&gt;Hempflower at 02:17, 6 November 2019</title>
		<link rel="alternate" type="text/html" href="https://wikivg.spaghett.dev/index.php?title=Zh:Authentication&amp;diff=10389&amp;oldid=prev"/>
		<updated>2019-11-06T02:17:35Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://wikivg.spaghett.dev/index.php?title=Zh:Authentication&amp;amp;diff=10389&amp;amp;oldid=10388&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>imported&gt;Hempflower</name></author>
	</entry>
	<entry>
		<id>https://wikivg.spaghett.dev/index.php?title=Zh:Authentication&amp;diff=10388&amp;oldid=prev</id>
		<title>imported&gt;Kaniol: Kaniol moved page ZH:认证 to ZH:Authentication</title>
		<link rel="alternate" type="text/html" href="https://wikivg.spaghett.dev/index.php?title=Zh:Authentication&amp;diff=10388&amp;oldid=prev"/>
		<updated>2019-09-30T22:08:56Z</updated>

		<summary type="html">&lt;p&gt;Kaniol moved page &lt;a href=&quot;/index.php?title=ZH:%E8%AE%A4%E8%AF%81&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;ZH:认证 (page does not exist)&quot;&gt;ZH:认证&lt;/a&gt; to &lt;a href=&quot;/index.php?title=ZH:Authentication&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;ZH:Authentication (page does not exist)&quot;&gt;ZH:Authentication&lt;/a&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:08, 30 September 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>imported&gt;Kaniol</name></author>
	</entry>
	<entry>
		<id>https://wikivg.spaghett.dev/index.php?title=Zh:Authentication&amp;diff=10387&amp;oldid=prev</id>
		<title>imported&gt;Kaniol: /* 错误 */</title>
		<link rel="alternate" type="text/html" href="https://wikivg.spaghett.dev/index.php?title=Zh:Authentication&amp;diff=10387&amp;oldid=prev"/>
		<updated>2019-09-30T17:58:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;错误&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:58, 30 September 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l36&quot;&gt;Line 36:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 36:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  |-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  |-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ! &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Error&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ! &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;错误&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ! &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Cause&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ! &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;原因&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ! &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Error message&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ! &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;错误信息&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ! &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Notes&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ! &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;注释&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  |-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  |-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  | &amp;lt;code&amp;gt;Method Not Allowed&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  | &amp;lt;code&amp;gt;Method Not Allowed&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>imported&gt;Kaniol</name></author>
	</entry>
	<entry>
		<id>https://wikivg.spaghett.dev/index.php?title=Zh:Authentication&amp;diff=10386&amp;oldid=prev</id>
		<title>imported&gt;Kaniol at 15:57, 30 September 2019</title>
		<link rel="alternate" type="text/html" href="https://wikivg.spaghett.dev/index.php?title=Zh:Authentication&amp;diff=10386&amp;oldid=prev"/>
		<updated>2019-09-30T15:57:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:57, 30 September 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l49&quot;&gt;Line 49:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 49:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  |&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  |&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  | The server has not found anything matching the request URI&amp;lt;br/&amp;gt;服务器未找到与请求URI匹配的任何内容&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  | The server has not found anything matching the request URI&amp;lt;br/&amp;gt;服务器未找到与请求URI匹配的任何内容&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  | &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;调用了不存在的后缀。&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  | &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;调用了不存在的端点。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  |-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  |-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  | &amp;lt;code&amp;gt;ForbiddenOperationException&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  | &amp;lt;code&amp;gt;ForbiddenOperationException&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l96&quot;&gt;Line 96:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 96:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;使用密码认证用户。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;使用密码认证用户。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;后缀 &lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;端点 &lt;/ins&gt;===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  /authenticate&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  /authenticate&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l160&quot;&gt;Line 160:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 160:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;有一些实例曾观察到Mojang对于旧版账号失败的刷新请求返回了一个平坦的&amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;。还不清楚什么实际错误绑定了这个空响应，而且它极为罕见，但作为实现应该注意对该响应的空输出。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;有一些实例曾观察到Mojang对于旧版账号失败的刷新请求返回了一个平坦的&amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;。还不清楚什么实际错误绑定了这个空响应，而且它极为罕见，但作为实现应该注意对该响应的空输出。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;这个后缀是严格速率限制的：短时间内同一账号的多次&lt;/del&gt;&amp;lt;code&amp;gt;/authenticate&amp;lt;/code&amp;gt;请求（例如在几秒内3次请求），即使密码正确也会导致一个&amp;lt;code&amp;gt;Invalid credentials.&amp;lt;/code&amp;gt;响应。该错误会在几秒后被清除。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;这个端点是严格速率限制的：短时间内同一账号的多次&lt;/ins&gt;&amp;lt;code&amp;gt;/authenticate&amp;lt;/code&amp;gt;请求（例如在几秒内3次请求），即使密码正确也会导致一个&amp;lt;code&amp;gt;Invalid credentials.&amp;lt;/code&amp;gt;响应。该错误会在几秒后被清除。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 刷新 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 刷新 ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l166&quot;&gt;Line 166:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 166:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;刷新一个有效的&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;。它可以用于在游戏会话间保持登录状态，这优于在文件中保存用户的密码（见[[ZH:lastlogin|lastlogin]]）。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;刷新一个有效的&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;。它可以用于在游戏会话间保持登录状态，这优于在文件中保存用户的密码（见[[ZH:lastlogin|lastlogin]]）。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;后缀 &lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;端点 &lt;/ins&gt;===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  /refresh&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  /refresh&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l215&quot;&gt;Line 215:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 215:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 验证 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 验证 ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;检查&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;是否可用于Minecraft服务器的认证。Minecraft启动器（自1.6.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;13版本起）会在启动器调用此后缀来验证保存的令牌是否仍然可用，并会在返回错误时调用&lt;/del&gt;&amp;lt;code&amp;gt;/refresh&amp;lt;/code&amp;gt;。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;检查&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;是否可用于Minecraft服务器的认证。Minecraft启动器（自1.6.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;13版本起）会在启动器调用此端点来验证保存的令牌是否仍然可用，并会在返回错误时调用&lt;/ins&gt;&amp;lt;code&amp;gt;/refresh&amp;lt;/code&amp;gt;。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;请注意&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;可能会不可用与Minecraft服务器的认证，而对于&amp;lt;code&amp;gt;/refresh&amp;lt;/code&amp;gt;来说足够可用。这主要会发生在一个人使用了另一个客户端（如在别的PC上使用相同的帐号游玩了Minecraft）。看起来只有给定帐号最新获得的&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;才能可靠地用于认证（第二新的令牌看起来也仍然有效，但请不要依赖它）。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;请注意&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;可能会不可用与Minecraft服务器的认证，而对于&amp;lt;code&amp;gt;/refresh&amp;lt;/code&amp;gt;来说足够可用。这主要会发生在一个人使用了另一个客户端（如在别的PC上使用相同的帐号游玩了Minecraft）。看起来只有给定帐号最新获得的&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;才能可靠地用于认证（第二新的令牌看起来也仍然有效，但请不要依赖它）。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l221&quot;&gt;Line 221:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 221:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;/validate&amp;lt;/code&amp;gt;可以在有或没有&amp;lt;code&amp;gt;clientToken&amp;lt;/code&amp;gt;时调用。如果提供了&amp;lt;code&amp;gt;clientToken&amp;lt;/code&amp;gt;，它应当与获取&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;的那个相匹配。Minecraft启动器会向&amp;lt;code&amp;gt;/validate&amp;lt;/code&amp;gt;发送&amp;lt;code&amp;gt;clientToken&amp;lt;/code&amp;gt;。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;/validate&amp;lt;/code&amp;gt;可以在有或没有&amp;lt;code&amp;gt;clientToken&amp;lt;/code&amp;gt;时调用。如果提供了&amp;lt;code&amp;gt;clientToken&amp;lt;/code&amp;gt;，它应当与获取&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;的那个相匹配。Minecraft启动器会向&amp;lt;code&amp;gt;/validate&amp;lt;/code&amp;gt;发送&amp;lt;code&amp;gt;clientToken&amp;lt;/code&amp;gt;。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;后缀 &lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;端点 &lt;/ins&gt;===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  /validate&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  /validate&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l242&quot;&gt;Line 242:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 242:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;使用帐号的用户名和密码使&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;失效。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;使用帐号的用户名和密码使&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;失效。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;后缀 &lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;端点 &lt;/ins&gt;===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  /signout&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  /signout&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l263&quot;&gt;Line 263:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 263:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;使用client/access令牌对使&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;失效。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;使用client/access令牌对使&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;失效。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;后缀 &lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;端点 &lt;/ins&gt;===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  /invalidate&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  /invalidate&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>imported&gt;Kaniol</name></author>
	</entry>
	<entry>
		<id>https://wikivg.spaghett.dev/index.php?title=Zh:Authentication&amp;diff=10385&amp;oldid=prev</id>
		<title>imported&gt;Kaniol at 15:39, 30 September 2019</title>
		<link rel="alternate" type="text/html" href="https://wikivg.spaghett.dev/index.php?title=Zh:Authentication&amp;diff=10385&amp;oldid=prev"/>
		<updated>2019-09-30T15:39:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://wikivg.spaghett.dev/index.php?title=Zh:Authentication&amp;amp;diff=10385&amp;amp;oldid=10384&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>imported&gt;Kaniol</name></author>
	</entry>
	<entry>
		<id>https://wikivg.spaghett.dev/index.php?title=Zh:Authentication&amp;diff=10384&amp;oldid=prev</id>
		<title>imported&gt;Kaniol: Created page with &quot;Minecraft 1.6引入了一种全新的叫作&#039;&#039;&#039;Yggdrasil&#039;&#039;&#039;的认证方案，它彻底地取代了先前的认证系统。Mojang的其他游戏，Scrolls，...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wikivg.spaghett.dev/index.php?title=Zh:Authentication&amp;diff=10384&amp;oldid=prev"/>
		<updated>2019-09-30T15:13:36Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Minecraft 1.6引入了一种全新的叫作&amp;#039;&amp;#039;&amp;#039;Yggdrasil&amp;#039;&amp;#039;&amp;#039;的认证方案，它彻底地取代了&lt;a href=&quot;/index.php?title=ZH:%E6%97%A7%E7%89%88%E8%AE%A4%E8%AF%81&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;ZH:旧版认证 (page does not exist)&quot;&gt;先前的认证系统&lt;/a&gt;。Mojang的其他游戏，Scrolls，...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Minecraft 1.6引入了一种全新的叫作&amp;#039;&amp;#039;&amp;#039;Yggdrasil&amp;#039;&amp;#039;&amp;#039;的认证方案，它彻底地取代了[[ZH:旧版认证|先前的认证系统]]。Mojang的其他游戏，Scrolls，同样也使用了该认证方法。Mojang曾经说过[https://twitter.com/KrisJelbring/status/453573406341206016 每个人都应使用此认证系统来进行自定义登录]，但是[https://twitter.com/KrisJelbring/status/461390585086361600 永远不会从用户收集凭据]。&lt;br /&gt;
&lt;br /&gt;
== 请求格式 ==&lt;br /&gt;
所有对Yggdrasil的请求都会发送到以下服务器：&lt;br /&gt;
&lt;br /&gt;
 https://authserver.mojang.com&lt;br /&gt;
&lt;br /&gt;
此外，它们应满足以下规则：&lt;br /&gt;
&lt;br /&gt;
* 为&amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt;请求&lt;br /&gt;
* &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt;头设置为&amp;lt;code&amp;gt;application/json&amp;lt;/code&amp;gt;&lt;br /&gt;
* 以包含[[wikipedia:zh:JSON|JSON]]编码的字典作为负载&lt;br /&gt;
&lt;br /&gt;
如果请求成功，服务器将响应：&lt;br /&gt;
&lt;br /&gt;
* 状态码&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;&lt;br /&gt;
* 根据以下规范使用[[wikipedia:zh:JSON|JSON]]编码的字典&lt;br /&gt;
&lt;br /&gt;
但如果请求失败，服务器会响应：&lt;br /&gt;
&lt;br /&gt;
* 适当的非200[[wikipedia:zh:HTTP状态码|HTTP状态码]]&lt;br /&gt;
* 拥有以下格式的[[wikipedia:zh:JSON|JSON]]编码的字典：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;error&amp;quot;: &amp;quot;Short description of the error&amp;quot;,&lt;br /&gt;
    &amp;quot;errorMessage&amp;quot;: &amp;quot;Longer description which can be shown to the user&amp;quot;,&lt;br /&gt;
    &amp;quot;cause&amp;quot;: &amp;quot;Cause of the error&amp;quot; // 可选的&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 错误 ==&lt;br /&gt;
&lt;br /&gt;
这些是可能遇到的一些错误：&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Error&lt;br /&gt;
 ! Cause&lt;br /&gt;
 ! Error message&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;code&amp;gt;Method Not Allowed&amp;lt;/code&amp;gt;&lt;br /&gt;
 |&lt;br /&gt;
 | The method specified in the request is not allowed for the resource identified by the request URI&lt;br /&gt;
 | Something other than a POST request was received.&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;code&amp;gt;Not Found&amp;lt;/code&amp;gt;&lt;br /&gt;
 |&lt;br /&gt;
 | The server has not found anything matching the request URI&lt;br /&gt;
 | Non-existing endpoint was called.&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;code&amp;gt;ForbiddenOperationException&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &amp;lt;code&amp;gt;UserMigratedException&amp;lt;/code&amp;gt;&lt;br /&gt;
 | Invalid credentials. Account migrated, use e-mail as username.&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;code&amp;gt;ForbiddenOperationException&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 | Invalid credentials. Invalid username or password.&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;code&amp;gt;ForbiddenOperationException&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 | Invalid credentials.&lt;br /&gt;
 | Too many login attempts with this username recently (see &amp;lt;code&amp;gt;/authenticate&amp;lt;/code&amp;gt;). Note that username and password may still be valid!&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;code&amp;gt;ForbiddenOperationException&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 | Invalid token.&lt;br /&gt;
 | &amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt; was invalid.&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;code&amp;gt;IllegalArgumentException&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 | Access token already has a profile assigned.&lt;br /&gt;
 | Selecting profiles isn&amp;#039;t implemented yet.&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;code&amp;gt;IllegalArgumentException&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 | credentials is null&lt;br /&gt;
 | Username/password was not submitted.&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;code&amp;gt;IllegalArgumentException&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 | Invalid salt version&lt;br /&gt;
 | ???&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;code&amp;gt;Unsupported Media Type&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 | The server is refusing to service the request because the entity of the request is in a format not supported by the requested resource for the requested method&lt;br /&gt;
 | Data was not submitted as application/json&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== 认证 ==&lt;br /&gt;
&lt;br /&gt;
通过密码认证用户。&lt;br /&gt;
&lt;br /&gt;
=== 后缀 ===&lt;br /&gt;
&lt;br /&gt;
 /authenticate&lt;br /&gt;
&lt;br /&gt;
=== 负载 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;agent&amp;quot;: {                              // 默认为Minecraft&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;Minecraft&amp;quot;,                // 对于Mojang的其他游戏Scrolls，则应该使用&amp;quot;Scrolls&amp;quot;&lt;br /&gt;
        &amp;quot;version&amp;quot;: 1                        // 以后的原版客户端&lt;br /&gt;
                                            // 可能会增加该数字&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;mojang account name&amp;quot;,      // 可以是电子邮箱地址或&lt;br /&gt;
                                            // 玩家名称（对于为迁移的账号）&lt;br /&gt;
    &amp;quot;password&amp;quot;: &amp;quot;mojang account password&amp;quot;,&lt;br /&gt;
    &amp;quot;clientToken&amp;quot;: &amp;quot;client identifier&amp;quot;,     // 可选的&lt;br /&gt;
    &amp;quot;requestUser&amp;quot;: true                     // 可选的，默认为false，若为true则将user对象加入到响应中&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;clientToken&amp;lt;/code&amp;gt;应该是一个随机生成的标识符而且必须每次请求都是相同的。原版启动器会在第一次运行时生成一个随机的（v4）UUID并保存，在后续每次请求中复用它。如果省略，那么服务器会生成一个基于Java的[http://docs.oracle.com/javase/7/docs/api/java/util/UUID.html#toString() &amp;lt;code&amp;gt;UUID.toString()&amp;lt;/code&amp;gt;]的随机令牌，它应该由客户端保存下来。然而这也会使用户之前在所有客户端上获取的&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;失效。&lt;br /&gt;
&lt;br /&gt;
=== 响应 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;accessToken&amp;quot;: &amp;quot;random access token&amp;quot;,      // 十六进制&lt;br /&gt;
    &amp;quot;clientToken&amp;quot;: &amp;quot;client identifier&amp;quot;,        // 与接收到的相同&lt;br /&gt;
    &amp;quot;availableProfiles&amp;quot;: [                     // 仅在接收到agent字段时出现&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;profile identifier&amp;quot;,        // 十六进制&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;player name&amp;quot;,&lt;br /&gt;
            &amp;quot;legacy&amp;quot;: true or false            // 事实上它仅为true时出现。默认为false。&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;selectedProfile&amp;quot;: {                       // 仅在接收到agent字段时出现&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;uuid without dashes&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;player name&amp;quot;,&lt;br /&gt;
        &amp;quot;legacy&amp;quot;: true or false&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;user&amp;quot;: {                                  // 仅在请求负载中的requestUser为true出现&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;user identifier&amp;quot;,               // 十六进制&lt;br /&gt;
        &amp;quot;properties&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;name&amp;quot;: &amp;quot;preferredLanguage&amp;quot;,   // 也许不会对所有账号显示&lt;br /&gt;
                &amp;quot;value&amp;quot;: &amp;quot;en&amp;quot;                  // Java locale格式 （https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html#toString--）&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;name&amp;quot;: &amp;quot;twitch_access_token&amp;quot;, // 仅在关联twitch账号时出现（见https://account.mojang.com/me/settings）&lt;br /&gt;
                &amp;quot;value&amp;quot;: &amp;quot;twitch oauth token&amp;quot;  // OAuth 2.0令牌，字母+数字，如https://api.twitch.tv/kraken?oauth_token=[...]&lt;br /&gt;
                                               // Twitch API的文档：https://github.com/justintv/Twitch-API&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;注意：&amp;#039;&amp;#039;&amp;#039;如果用户希望能在他们的电脑上保存登录状态，那么强烈建议应该存储&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;而不是密码本身。&lt;br /&gt;
&lt;br /&gt;
当前每个账号只拥有一个档案，一个账号拥有多个档案还在未来计划中。如果用户尝试登入一个没有附加Minecraft许可的Mojang账号，那么认证将会成功，但是响应将不包含&amp;lt;code&amp;gt;selectedProfile&amp;lt;/code&amp;gt;字段，而且&amp;lt;code&amp;gt;availableProfiles&amp;lt;/code&amp;gt;数组也是空的。&lt;br /&gt;
&lt;br /&gt;
有一些实例曾观察到Mojang对于旧版账号失败的刷新请求返回了一个平坦的&amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;。还不清楚什么实际错误绑定了这个空响应，而且它极为罕见，但作为实现应该注意对该响应的空输出。&lt;br /&gt;
&lt;br /&gt;
这个后缀是严格速率限制的：短时间内同一账号的多次&amp;lt;code&amp;gt;/authenticate&amp;lt;/code&amp;gt;请求（例如在几秒内3次请求），即使密码正确也会导致一个&amp;lt;code&amp;gt;Invalid credentials.&amp;lt;/code&amp;gt;响应。该错误会在几秒后被清除。&lt;br /&gt;
&lt;br /&gt;
== 刷新 ==&lt;br /&gt;
&lt;br /&gt;
刷新一个有效的&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;。它可以用于在游戏会话间保持登录状态，这优于在文件中保存用户的密码（见[[ZH:lastlogin|lastlogin]]）。&lt;br /&gt;
&lt;br /&gt;
=== 后缀 ===&lt;br /&gt;
&lt;br /&gt;
 /refresh&lt;br /&gt;
&lt;br /&gt;
=== 负载 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;accessToken&amp;quot;: &amp;quot;valid accessToken&amp;quot;,&lt;br /&gt;
    &amp;quot;clientToken&amp;quot;: &amp;quot;client identifier&amp;quot;,  // 这需要与第一处用来获取&lt;br /&gt;
                                         // accessToken的那个相同&lt;br /&gt;
    &amp;quot;selectedProfile&amp;quot;: {                 // 可选的，发送它将导致错误&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;profile identifier&amp;quot;,      // 十六进制&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;player name&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;requestUser&amp;quot;: true                  // 可选的，默认为false，若为true则将user对象加入到响应中&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
注意：提供的&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;将失效。&lt;br /&gt;
&lt;br /&gt;
=== 响应 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;accessToken&amp;quot;: &amp;quot;random access token&amp;quot;,      // 十六进制&lt;br /&gt;
    &amp;quot;clientToken&amp;quot;: &amp;quot;client identifier&amp;quot;,        // 与接收到的相同&lt;br /&gt;
    &amp;quot;selectedProfile&amp;quot;: {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;profile identifier&amp;quot;,            // 十六进制&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;player name&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;user&amp;quot;: {                                  // 仅在请求负载中的requestUser为true出现&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;user identifier&amp;quot;,               // 十六进制&lt;br /&gt;
        &amp;quot;properties&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;name&amp;quot;: &amp;quot;preferredLanguage&amp;quot;,   // 也许不会对所有账号显示&lt;br /&gt;
                &amp;quot;value&amp;quot;: &amp;quot;en&amp;quot;                  // Java locale格式（https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html#toString--）&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;name&amp;quot;: &amp;quot;twitch_access_token&amp;quot;, // 仅在关联twitch账号时出现（见https://account.mojang.com/me/settings）&lt;br /&gt;
                &amp;quot;value&amp;quot;: &amp;quot;twitch oauth token&amp;quot;  // OAuth 2.0令牌，字母+数字，如https://api.twitch.tv/kraken?oauth_token=[...]&lt;br /&gt;
                                               // Twitch API的文档：https://github.com/justintv/Twitch-API&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 验证 ==&lt;br /&gt;
&lt;br /&gt;
检查&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;是否可用于Minecraft服务器的认证。Minecraft启动器（自1.6.13版本起）会在启动器调用此后缀来验证保存的令牌是否仍然可用，并会在返回错误时调用&amp;lt;code&amp;gt;/refresh&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
请注意&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;可能会不可用与Minecraft服务器的认证，而对于&amp;lt;code&amp;gt;/refresh&amp;lt;/code&amp;gt;来说足够可用。这主要会发生在一个人使用了另一个客户端（如在别的PC上使用相同的帐号游玩了Minecraft）。看起来只有给定帐号最新获得的&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;才能可靠地用于认证（第二新的令牌看起来也仍然有效，但请不要依赖它）。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/validate&amp;lt;/code&amp;gt;可以在有或没有&amp;lt;code&amp;gt;clientToken&amp;lt;/code&amp;gt;时调用。如果提供了&amp;lt;code&amp;gt;clientToken&amp;lt;/code&amp;gt;，它应当与获取&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;的那个相匹配。Minecraft启动器会向&amp;lt;code&amp;gt;/validate&amp;lt;/code&amp;gt;发送&amp;lt;code&amp;gt;clientToken&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
=== 后缀 ===&lt;br /&gt;
&lt;br /&gt;
 /validate&lt;br /&gt;
&lt;br /&gt;
=== 负载 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;accessToken&amp;quot;: &amp;quot;valid accessToken&amp;quot;,&lt;br /&gt;
    &amp;quot;clientToken&amp;quot;: &amp;quot;associated clientToken&amp;quot; // 可选的，见上&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 响应 ===&lt;br /&gt;
&lt;br /&gt;
若成功返回空响应（&amp;lt;code&amp;gt;204 No Content&amp;lt;/code&amp;gt;），否则返回错误JSON和状态码&amp;lt;code&amp;gt;403 Forbidden&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 登出 ==&lt;br /&gt;
&lt;br /&gt;
使用帐号的用户名和密码使&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;失效。&lt;br /&gt;
&lt;br /&gt;
=== 后缀 ===&lt;br /&gt;
&lt;br /&gt;
 /signout&lt;br /&gt;
&lt;br /&gt;
=== 负载 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;mojang account name&amp;quot;,&lt;br /&gt;
    &amp;quot;password&amp;quot;: &amp;quot;mojang account password&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 响应 ===&lt;br /&gt;
&lt;br /&gt;
若成功返回一个空负载。&lt;br /&gt;
&lt;br /&gt;
== 使失效 ==&lt;br /&gt;
&lt;br /&gt;
使用client/access令牌对使&amp;lt;code&amp;gt;accessToken&amp;lt;/code&amp;gt;失效。&lt;br /&gt;
&lt;br /&gt;
=== 后缀 ===&lt;br /&gt;
&lt;br /&gt;
 /invalidate&lt;br /&gt;
&lt;br /&gt;
=== 负载 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;accessToken&amp;quot;: &amp;quot;valid accessToken&amp;quot;,&lt;br /&gt;
    &amp;quot;clientToken&amp;quot;: &amp;quot;client identifier&amp;quot;   // 这需要与第一处用来获取&lt;br /&gt;
                                         // accessToken的那个相同&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 响应 ===&lt;br /&gt;
&lt;br /&gt;
若成功返回一个空负载。&lt;br /&gt;
&lt;br /&gt;
== 加入服务器  ==&lt;br /&gt;
&lt;br /&gt;
见[[ZH:协议加密#认证|协议加密#认证]]&lt;br /&gt;
&lt;br /&gt;
[[Category:ZH:协议细节]]&lt;br /&gt;
[[Category:ZH:Minecraft Modern]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Kaniol</name></author>
	</entry>
</feed>