<linkrel="alternate"type="application/atom+xml"href="/docs/blog/atom.xml"title="Bytedesk Atom Feed"><linkrel="stylesheet"href="/docs/assets/css/styles.e5fc9141.css">
<li>Desktop client generates a unique device uid: deviceUid</li>
<li>Sends this deviceUid to the server, server returns a random code: randomCode</li>
<li>Desktop client generates QR code using randomCode and deviceUid</li>
<li>Mobile client scans this QR code, obtains deviceUid, sends deviceUid to server, server updates status to SCANED</li>
<li>Mobile client clicks confirm login, sends mobile number and deviceUid to server, server saves mobile number and updates status to CONFIRMED</li>
<li>Desktop client polls to get mobile number and CONFIRMED status, uses mobile number and randomCode to call login API</li>
<li>If desktop client gets EXPIRED status, it needs to fetch a new randomCode and regenerate QR code</li>
<li>After successful login, returns accessToken, desktop client saves this accessToken locally and redirects to homepage</li>
</ul></div><footerclass="row docusaurus-mt-lg"><divclass="col col--9"><b>Tags:</b><ulclass="tags_w_BC padding--none margin-left--sm"><liclass="tag_YWQv"><atitle="Developer tag description"class="tag_fNRr tagRegular_JYB4"href="/docs/blog/tags/developer">Developer</a></li><liclass="tag_YWQv"><atitle="Bytedesk tag description"class="tag_fNRr tagRegular_JYB4"href="/docs/blog/tags/bytedesk">Bytedesk</a></li></ul></div><divclass="col text--right col--3"><aaria-label="Read more about QR Code Login Implementation Process"href="/docs/blog/scan-to-login"><b>Read More</b></a></div></footer></article><articleclass="margin-bottom--xl"><header><h2class="title_BpF0"><ahref="/docs/blog/welcome">Welcome</a></h2><divclass="container_cyiP margin-vert--md"><timedatetime="2021-08-26T00:00:00.000Z">August 26, 2021</time> · <!---->1 min read</div><divclass="margin-top--md margin-bottom--sm row"><divclass="col col--6 authorCol_NNq5"><divclass="avatar margin-bottom--sm"><ahref="https://sebastienlorber.com"target="_blank"rel="noopener noreferrer"class="avatar__photo-link"><imgclass="avatar__photo authorImage_Wfk3"src="https://github.com/slorber.png"alt="Sébastien Lorber"></a><divclass="avatar__intro authorDetails_Yf6O"><divclass="avatar__name"><ahref="https://sebastienlorber.com"target="_blank"rel="noopener noreferrer"><spanclass="authorName_DJtI">Sébastien Lorber</span></a></div><smallclass="authorTitle_heuk"title="Docusaurus maintainer">Docusaurus maintainer</small><divclass="authorSocials_PQJc"></div></div></div></div><divclass="col col--6 authorCol_NNq5"><divclass="avatar margin-bottom--sm"><ahref="https://github.com/yangshun"target="_blank"rel="noopener noreferrer"class="avatar__photo-link"><imgclass="avatar__photo authorImage_Wfk3"src="https://github.com/yangshun.png"alt="Yangshun Tay"></a><divclass="avatar__intro authorDetails_Yf6O"><divclass="avatar__name"><ahref="https://github.com/yangshun"target="_blank"rel="noopener noreferrer"><spanclass="authorName_DJtI">Yangshun Tay</span></a></div><smallclass="authorTitle_heuk"title="Front End Engineer @ Facebook">Front End Engineer @ Facebook</small><divclass="authorSocials_PQJc"></div></div></div></div></div></header><divclass="markdown"><p><ahref="https://docusaurus.io/docs/blog"target="_blank"rel="noopener noreferrer">Docusaurus blogging features</a> are powered by the <ahref="https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog"target="_blank"rel="noopener noreferrer">blog plugin</a>.</p>
<p>Here are a few tips you might find useful.</p></div><footerclass="row docusaurus-mt-lg"><divclass="col col--9"><b>Tags:</b><ulclass="tags_w_BC padding--none margin-left--sm"><liclass="tag_YWQv"><atitle="Facebook tag description"class="tag_fNRr tagRegular_JYB4"href="/docs/blog/tags/facebook">Facebook</a></li><liclass="tag_YWQv"><atitle="Hello tag description"class="tag_fNRr tagRegular_JYB4"href="/docs/blog/tags/hello">Hello</a></li><liclass="tag_YWQv"><atitle="Docusaurus tag description"class="tag_fNRr tagRegular_JYB4"href="/docs/blog/tags/docusaurus">Docusaurus</a></li></ul></div><divclass="col text--right col--3"><aaria-label="Read more about Welcome"href="/docs/blog/welcome"><b>Read More</b></a></div></footer></article><articleclass="margin-bottom--xl"><header><h2class="title_BpF0"><ahref="/docs/blog/mdx-blog-post">MDX Blog Post</a></h2><divclass="container_cyiP margin-vert--md"><timedatetime="2021-08-01T00:00:00.000Z">August 1, 2021</time> · <!---->1 min read</div><divclass="margin-top--md margin-bottom--sm row"><divclass="col col--12 authorCol_NNq5"><divclass="avatar margin-bottom--sm"><ahref="https://sebastienlorber.com"target="_blank"rel="noopener noreferrer"class="avatar__photo-link"><imgclass="avatar__photo authorImage_Wfk3"src="https://github.com/slorber.png"alt="Sébastien Lorber"></a><divclass="avatar__intro authorDetails_Yf6O"><divclass="avatar__name"><ahref="https://sebastienlorber.com"target="_blank"rel="noopener noreferrer"><spanclass="authorName_DJtI">Sébastien Lorber</span></a></div><smallclass="authorTitle_heuk"title="Docusaurus maintainer">Docusaurus maintainer</small><divclass="authorSocials_PQJc"></div></div></div></div></div></header><divclass="markdown"><p>Blog posts support <ahref="https://docusaurus.io/docs/markdown-features"target="_blank"rel="noopener noreferrer">Docusaurus Markdown features</a>, such as <ahref="https://mdxjs.com/"target="_blank"rel="noopener noreferrer">MDX</a>.</p>
<divclass="theme-admonition theme-admonition-tip admonition_MFCT alert alert--success"><divclass="admonitionHeading_WN9v"><spanclass="admonitionIcon_zEhI"><svgviewBox="0 0 12 16"><pathfill-rule="evenodd"d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>Tip</div><divclass="admonitionContent_AAwk"><p>Use the power of React to create interactive blog posts.</p></div></div></div><footerclass="row docusaurus-mt-lg"><divclass="col col--9"><b>Tags:</b><ulclass="tags_w_BC padding--none margin-left--sm"><liclass="tag_YWQv"><atitle="Docusaurus tag description"class="tag_fNRr tagRegular_JYB4"href="/docs/blog/tags/docusaurus">Docusaurus</a></li></ul></div><divclass="col text--right col--3"><aaria-label="Read more about MDX Blog Post"href="/docs/blog/mdx-blog-post"><b>Read More</b></a></div></footer></article><articleclass="margin-bottom--xl"><header><h2class="title_BpF0"><ahref="/docs/blog/long-blog-post">Long Blog Post</a></h2><divclass="container_cyiP margin-vert--md"><timedatetime="2019-05-29T00:00:00.000Z">May 29, 2019</time> · <!---->3 min read</div><divclass="margin-top--md margin-bottom--sm row"><divclass="col col--12 authorCol_NNq5"><divclass="avatar margin-bottom--sm"><ahref="https://github.com/yangshun"target="_blank"rel="noopener noreferrer"class="avatar__photo-link"><imgclass="avatar__photo authorImage_Wfk3"src="https://github.com/yangshun.png"alt="Yangshun Tay"></a><divclass="avatar__intro authorDetails_Yf6O"><divclass="avatar__name"><ahref="https://github.com/yangshun"target="_blank"rel="noopener noreferrer"><spanclass="authorName_DJtI">Yangshun Tay</span></a></div><smallclass="authorTitle_heuk"title="Front End Engineer @ Facebook">Front End Engineer @ Facebook</small><divclass="authorSocials_PQJc"></div></div></div></div></div></header><divclass="markdown"><p>This is the summary of a very long blog post,</p>
<p>Use a <code><!--</code><code>truncate</code><code>--></code> comment to limit blog post size in the list view.</p></div><footerclass="row docusaurus-mt-lg"><divclass="col col--9"><b>Tags:</b><ulclass="tags_w_BC padding--none margin-left--sm"><liclass="tag_YWQv"><atitle="Hello tag description"class="tag_fNRr tagRegular_JYB4"href="/docs/blog/tags/hello">Hello</a></li><liclass="tag_YWQv"><atitle="Docusaurus tag description"class="tag_fNRr tagRegular_JYB4"href="/docs/blog/tags/docusaurus">Docusaurus</a></li></ul></div><divclass="col text--right col--3"><aaria-label="Read more about Long Blog Post"href="/docs/blog/long-blog-post"><b>Read More</b></a></div></footer></article><articleclass="margin-bottom--xl"><header><h2class="title_BpF0"><ahref="/docs/blog/first-blog-post">First Blog Post</a></h2><divclass="container_cyiP margin-vert--md"><timedatetime="2019-05-28T00:00:00.000Z">May 28, 2019</time> · <!---->1 min read</div><divclass="margin-top--md margin-bottom--sm row"><divclass="col col--6 authorCol_NNq5"><divclass="avatar margin-bottom--sm"><ahref="https://sebastienlorber.com"target="_blank"rel="noopener noreferrer"class="avatar__photo-link"><imgclass="avatar__photo authorImage_Wfk3"src="https://github.com/slorber.png"alt="Sébastien Lorber"></a><divclass="avatar__intro authorDetails_Yf6O"><divclass="avatar__name"><ahref="https://sebastienlorber.com"target="_blank"rel="noopener noreferrer"><spanclass="authorName_DJtI">Sébastien Lorber</span></a></div><smallclass="authorTitle_heuk"title="Docusaurus maintainer">Docusaurus maintainer</small><divclass="authorSocials_PQJc"></div></div></div></div><divclass="col col--6 authorCol_NNq5"><divclass="avatar margin-bottom--sm"><ahref="https://github.com/yangshun"target="_blank"rel="noopener noreferrer"class="avatar__photo-link"><imgclass="avatar__photo authorImage_Wfk3"src="https://github.com/yangshun.png"alt="Yangshun Tay"></a><divclass="avatar__intro authorDetails_Yf6O"><divclass="avatar__name"><ahref="https://github.com/yangshun"target="_blank"rel="noopener noreferrer"><spanclass="authorName_DJtI">Yangshun Tay</span></a></div><smallclass="authorTitle_heuk"title="Front End Engineer @ Facebook">Front End Engineer @ Facebook</small><divclass="authorSocials_PQJc"></div></div></div></div></div></header><divclass="markdown"><p>Lorem ipsum dolor sit amet...</p></div><footerclass="row docusaurus-mt-lg"><divclass="col col--9"><b>Tags:</b><ulclass="tags_w_BC padding--none margin-left--sm"><liclass="tag_YWQv"><atitle="Hola tag description"class="tag_fNRr tagRegular_JYB4"href="/docs/blog/tags/hola">Hola</a></li><liclass="tag_YWQv"><atitle="Docusaurus tag description"class="tag_fNRr tagRegular_JYB4"href="/docs/blog/tags/docusaurus">Docusaurus</a></li></ul></div><divclass="col text--right col--3"><aaria-label="Read more about First Blog Post"href="/docs/blog/first-blog-post"><b>Read More</b></a></div></footer></article><navclass="pagination-nav"aria-label="Blog list page navigation"></nav></main></div></div></div><footerclass="footer footer--dark"><divclass="container container-fluid"><divclass="row footer__links"><divclass="col footer__col"><divclass="footer__title">Docs</div><ulclass="footer__items clean-list"><liclass="footer__item"><aclass="footer__link-item"href="/docs/docs/intro">Tutorial</a></li><liclass="footer__item"><ahref="https://www.weiyuai.cn/contact.html"target="_blank"rel="noopener noreferrer"class="footer__link-item">Contact<svgwidth="13.5"height="13.5"aria-hidden="true"viewBox="0 0 24 24"class="iconExternalLink_DnYJ"><pathfill="currentColor"d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><divclass="col footer__col"><divclass="footer__title">Community</div><ulclass="footer__items clean-list"><liclass="footer__item"><ahref="https://twitter.com/bytedeskai"target="_blank"rel="noopener noreferrer"class="footer__link-item">Twitter<svgwidth="13.5"height="13.5"aria-hidd