1.1.0 • Published 5 years ago

f1-passport v1.1.0

Weekly downloads
1
License
MIT
Repository
github
Last release
5 years ago

F1Passport SDK

F1Passport SDK 是Fox.One Cloud API 的接口的封装。

  • 滑块
  • 用户登陆
  • 用户注册
  • 获取用户信息
  • 商户登陆

Fox.One Cloud API 以及 GateWay API 的接口都需要签名和生成动态的Token,PassportSDK 同时提供了访问网关的签名API

  • 生成Token
  • 解析Token
  • 生成Sign

安装

yarn add f1-passport

使用

Passport 不会存储 Session 和用户信息,由使用F1-Passport的接入放自行存储 Passport 登陆后获取到的数据结构大致如下,session为后续接入方发送请求时签名的必要字段

{
    "user":
     {
    //...
    },
    "session": {
        "key": "xxxx",
        "secret":"xxx"
    }
}

Passport

用户登陆模块

import { Passport } from 'f1-passport';

// 实例化 Passport
const passport = new Passport({
  host: constants.passportHost,
  merchantId: constants.merchantId,
});
// 获取滑块
passport.getCaptcha()

// 获取注册验证码 邮箱 手机二选一
passport.requestRegister({regionCode,
        mobile,
        captchaId,
        captchaCode,
        email})
return {token:''}

// 注册 name可不传
passport.register({
        name,
        code,
        password,
        token,
    })
return {user:{},session:{}}
// 获取手机登录验证码
passport.requestLoginSMS({
        regionCode,
        mobile,
        captchaId,
        captchaCode
    })
return {token:''}

// 手机登陆
passport.mobileLogin({
        token,
        mobileCode,
})
return {user:{},session:{}}

// 账户密码登陆
// mobile 或者邮箱为选填字段
passport.login({ password: rawPassword, mobile, email })
return {user:{},session:{}}

// 获取用户信息
passport.getUserDetail({secret, key})
return {user:{}}

Admin

商户模块

import { Admin } from 'f1-passport';

const admin = new Admin({
  host: constants.adminHost,
});
// 商户登陆
admin.login({ password: rawPassword, username})
return {admin:{},session:{}}

Sign

签名函数

import { generateSignRequest, generateSignAndJWT } from 'f1-passport';

const signData = generateSignRequest({ method: 'get', url: pathAndQuery, body: options.body });
return { uri, body, sign }

Token

生成请求的Token

import { generateToken, decodeToken } from 'f1-passport';

const token = await generateToken({ key: session.key, secret: session.secret, requestSign: signData.sign });

Password Salt

密码加盐

import { passwordSalt } from 'f1-passport';
const salePassword = passwordSalt(password);

Fox Cloud API 和 Gateway API 的调用说明

当业务方为 User,Maker 时必须在 Http Header里添加请求头 'fox-merchant-id':'xxxxxxx'

所有的业务方在有用户session时,发送的请求都需要默认的加上 "Authorization": Bearer ${token} }

token 为上述 Token 章节生成的动态token,每次都不一样,需要每次创建新的Token

Host

Admin https://dev-gateway.fox.one/ admin login https://dev-gateway.fox.one/admin/login

Maker https://dev-cloud.fox.one/ maker login https://dev-cloud.fox.one/api/account/login

Example

一个具体实际的例子,传入的url为完整的url,函数正则截取 host 对host 之后的path进行签名和请求

const regexSt = new RegExp('^https://[a-zA-Z0-9.-]*/');

async function signAndRequest(session, url, options) {
  let host = url.match(regexSt)[0];
  host = host.substring(0, host.length - 1);

  const pathAndQuery = url.replace(regexSt, '/');
  const signData = generateSignRequest({ method: options.method, url: pathAndQuery, body: options.body });
  const token = await generateToken({ key: session.key, secret: session.secret, requestSign: signData.sign });
  const finalUrl = `${host}${signData.uri}`;
  const headers = {
    ...options.headers,
    Authorization: `Bearer ${token}`,
  };
  const newOptions = {
    ...options,
    method: options.method,
    body: JSON.stringify(signData.body),
    headers,
  };
  return window.fetch(finalUrl, newOptions);
}

Playground

以下为已集成了 passportsdk 的模版 FoxOne Admin 模版 FoxONE Maker 模板工程

1.1.0

5 years ago

1.0.0

5 years ago

0.0.18

5 years ago

0.0.17

5 years ago

0.0.16

5 years ago

0.0.15

5 years ago

0.0.14

5 years ago

0.0.13

5 years ago

0.0.12

5 years ago

0.0.11

5 years ago

0.0.10

5 years ago

0.0.9

5 years ago

0.0.8

5 years ago

0.0.7

5 years ago

0.0.6

5 years ago

0.0.5

5 years ago

0.0.4

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago