UNPKG

@qiniu/miku-delivery-mp-ks

Version:

Kuaishou Mini Program SDK for Miku Delivery

33 lines (32 loc) 1.33 kB
//@ts-ignore import HmacSHA1 from '../crypto-js/hmac-sha1'; //@ts-ignore import Base64 from '../crypto-js/enc-base64'; import { Polyfilled_URL } from './url'; export function setSigningStr(config) { let signingStr = config.query ? `${config.path}?${config.query}\n` : `${config.path}\n`; config.body && (signingStr += config.body); return signingStr; } export function getAccessToken(config) { let pathname; try { pathname = new Polyfilled_URL(config.path).pathname; } catch (e) { pathname = config.path; } let str = setSigningStr(Object.assign(Object.assign({}, config), { path: pathname })); const sign = HmacSHA1(str, config.appSalt); // 注意这里不能直接使用 crypto-js/enc-base64url 提供的 `Base64url`, // crypto-js/enc-base64url 提供的 `Base64url` 会省略结果中作为 padding 的 `=`, // 而我们服务端采用的实现(golang `base64.URLEncoding`)要求不省略作为 padding 的 `=` const encodedSign = sign.toString(Base64); const urlSafeEncodedSign = encodedSign.replace(/\+/g, '-').replace(/\//g, '_'); let accessToken = `QApp ${config.appID}:${urlSafeEncodedSign}`; accessToken = accessToken.replace(/\//g, '_'); accessToken = accessToken.replace(/\+/g, '-'); return accessToken; }