函数与变量使用阅读名称;不展示原名对照。未确认的绑定使用中性名称。
1// 阅读用语义别名;非作者原名,导出协议名保持不变。请勿当作完整重建项目运行。2var verifierStorageKey = `oauthRedirectVerifierV2`,3 bytesToBase64Url = (e) => {4 let t = ``;5 for (let n of e) t += String.fromCharCode(n);6 return btoa(t).replace(/\+/g, `-`).replace(/\//g, `_`).replace(/=+$/, ``);7 },8 createRandomVerifier = () => {9 let e = new Uint8Array(32);10 return (crypto.getRandomValues(e), bytesToBase64Url(e));11 },12 createSha256Challenge = async (e) => {13 let n = await crypto.subtle.digest(`SHA-256`, new TextEncoder().encode(e));14 return bytesToBase64Url(new Uint8Array(n));15 },16 saveVerifier = (t) => {17 window.sessionStorage.setItem(verifierStorageKey, t);18 },19 readVerifier = () => window.sessionStorage.getItem(verifierStorageKey),20 clearVerifier = () => window.sessionStorage.removeItem(verifierStorageKey),21 redirectToAuthorizationUrl = (e) => window.location.assign(e);22export {23 redirectToAuthorizationUrl as a,24 readVerifier as i,25 createSha256Challenge as n,26 saveVerifier as o,27 createRandomVerifier as r,28 clearVerifier as t,29};已确认说明
- OAuth redirect生成随机verifier和SHA-256挑战