| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8" /> |
| <meta name="viewport" content="width=device-width" /> |
| <title>My static Space</title> |
| <link rel="stylesheet" href="style.css" /> |
| <script src="https://unpkg.com/es-module-shims@1.7.0/dist/es-module-shims.js"></script> |
| <script type="importmap"> |
| { |
| "imports": { |
| "@huggingface/hub": "https://cdn.jsdelivr.net/npm/@huggingface/hub@0.21.0/+esm" |
| } |
| } |
| </script> |
| </head> |
| <body> |
| <div class="card" style="margin-bottom: 2rem;"> |
| <h1>OAuth in a static Space</h1> |
| <p>Checkout the <a href="https://huggingface.co/spaces/huggingfacejs/client-side-oauth/blob/main/index.html" target="_blank">index.html</a> file to see the few lines of code |
| enabling this space</p> |
| <p>After clicking "Signin with HF", you will be redirected to this space and the access token + user info will be displayed.</p> |
| </div> |
| <img src="https://huggingface.co/datasets/huggingface/badges/resolve/main/sign-in-with-huggingface-xl-dark.svg" alt="Sign in with Hugging Face" style="cursor: pointer; display: none;" id="signin"> |
| <button id="signout" style="display: none">Sign out</button> |
| <pre> |
| |
| </pre> |
| <script type="module"> |
| import { oauthLoginUrl, oauthHandleRedirectIfPresent } from "@huggingface/hub"; |
| |
| console.log("huggingface env", window.huggingface); |
| |
| let oauthResult = localStorage.getItem("oauth"); |
| |
| if (oauthResult) { |
| try { |
| oauthResult = JSON.parse(oauthResult); |
| } catch { |
| oauthResult = null; |
| } |
| } |
| |
| oauthResult ||= await oauthHandleRedirectIfPresent(); |
| |
| if (oauthResult) { |
| document.querySelector("pre").textContent = JSON.stringify(oauthResult, null, 2); |
| localStorage.setItem("oauth", JSON.stringify(oauthResult)); |
| document.getElementById("signout").style.removeProperty("display"); |
| document.getElementById("signout").onclick = async function() { |
| localStorage.removeItem("oauth"); |
| window.location.href = window.location.href.replace(/\?.*$/, ''); |
| window.location.reload(); |
| } |
| } else { |
| document.getElementById("signin").style.removeProperty("display"); |
| document.getElementById("signin").onclick = async function() { |
| |
| window.location.href = (await oauthLoginUrl({scopes: window.huggingface.variables.OAUTH_SCOPES})) + "&prompt=consent"; |
| } |
| } |
| </script> |
| </body> |
| </html> |
|
|