1.6.0 • Published 9 months ago

@xbasesdk/xbase v1.6.0

Weekly downloads
-
License
ISC
Repository
-
Last release
9 months ago

xbase-sdk

提供 oauth2 的登录相关功能。

主要模块

OAuth2Client oauth2 基础模块

Auth 登录相关模块

使用示例

初始化对象

import {initializeClient} from '@xbasesdk/xbase';
iexport const config = {
    apiOrigin: "https://xbase-4gh5dh6nf62145a9.ap-shanghai.tcb-api.tencentcloudapi.com",
    clientId: "xbase-4gh5dh6nf62145a9",
};
const client = initializeClient(config);
// 调用API
const loginState = await client.auth.hasLoginState()

// 获取 accessToken
const accessToken =  await client.oAuth2Client.getAccessToken();

// 用 OIDC Token 用自己的API
export interface ExampleData {
    result?: string;
}
const data = await client.oAuth2Client.request<ExampleData>("https://example.com", {withCredentials:true})
console.log(data.result)

账号登录

auth.signIn({
  username: 'test',
  password: 'test',
});

手机验证码登录/注册

const phoneNumber = '10012341234';
// 短信验证码
const verificationCode = '******';
const verification = await auth.getVerification({
  phone_number: '+86 ' + phoneNumber,
  target: 'ANY',
});

let verifyResult = await auth.verify({
  verification_code: verificationCode,
  verification_id: verification ? verification.verification_id : '',
});
let isUser = verification ? verification.is_user : false;

let result;
if (isUser) {
  result = await auth.signIn({
    username: '+86 ' + phoneNumber,
    verification_code: verificationCode,
    verification_token: verifyResult.verification_token,
  });
} else {
  result = await auth.signUp({
    phone_number: '+86 ' + phoneNumber,
    password: '*******',
    verification_code: verificationCode,
    verification_token: verifyResult.verification_token,
    local: 'zh-cn',
    name: '100****1234',
  });
}

错误处理

try {
  await auth.verify({
    verification_code: verificationCode,
    verification_id: verification ? verification.verification_id : '',
  });
} catch (error) {
  if (error && error.error_uri === '/v1/auth/verification/verify') {
    switch (error.error) {
      case 'not_found': {
        result = i18n.translate('error', 'User Not Found');
        break;
      }
      case 'invalid_password': {
        if (error.details !== undefined && error.details.length > 0) {
          result =
            i18n.translate('error', 'Certification failed, you still have') +
            error.details[0].limit_remaining +
            i18n.translate('error', 'chances. You can also') +
            '' +
            i18n.translate('error', 'Reset Login Password') +
            '</a>';
        } else {
          result = i18n.translate('error', 'Password does not match');
        }
        break;
      }
      case 'user_pending': {
        result = i18n.translate('error', 'The account is not activated');
        break;
      }
      case 'user_blocked': {
        result = i18n.translate('error', 'Account has been disabled');
        break;
      }
      case 'invalid_status': {
        if (error.details !== undefined && error.details.length > 0) {
          let s = error.details[0].retry_delay;
          s = s.substring(0, s.length - 1);
          s = parseInt(s);
          result =
            i18n.translate(
              'error',
              'The password input error has reached the upper limit and the account will be locked ',
            ) +
            (s < 3600
              ? s / 60 + i18n.translate('error', 'minute')
              : s / 3600 + i18n.translate('error', 'hour'));
        } else {
          result = i18n.translate(
            'error',
            'Account has been temporarily locked',
          );
        }
        break;
      }
      case 'invalid_two_factor': {
        result = i18n.translate(
          'error',
          'Secondary authentication code does not match or has expired',
        );
        break;
      }
      case 'invalid_two_factor_recovery': {
        result = i18n.translate(
          'error',
          'Recovery code does not match or has expired',
        );
        break;
      }
      default: {
        result = i18n.translate('error', 'unknown');
        break;
      }
    }
  }
}

更新日志

1.6.0

9 months ago

1.0.1

2 years ago

1.4.6

2 years ago

1.4.5

2 years ago

1.4.1

2 years ago

1.0.5

2 years ago

1.4.0

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.4.60

2 years ago

1.4.62

2 years ago

1.4.61

2 years ago

1.4.20

2 years ago

1.4.66

2 years ago

1.4.65

2 years ago

1.4.21

2 years ago

1.4.68

2 years ago

1.4.67

2 years ago

1.4.23

2 years ago

1.4.26

2 years ago

1.4.69

2 years ago

1.4.25

2 years ago

1.4.27

2 years ago

1.0.2-src

2 years ago

1.4.71

2 years ago

1.4.70

2 years ago

1.4.75

2 years ago

1.4.31

2 years ago

1.4.30

2 years ago

1.4.33

2 years ago

1.4.32

2 years ago

1.4.79

2 years ago

1.4.35

2 years ago

1.4.78

2 years ago

1.4.34

2 years ago

1.4.37

2 years ago

1.4.36

2 years ago

1.5.2

2 years ago

1.5.1

2 years ago

1.4.80

2 years ago

1.3.0

2 years ago

1.4.81

2 years ago

1.4.86

2 years ago

1.4.85

2 years ago

1.4.46

2 years ago

1.4.45

2 years ago

1.4.49

2 years ago

1.4.51

2 years ago

1.4.96

2 years ago

1.4.9

2 years ago

1.4.55

2 years ago

1.4.11

2 years ago

1.4.8

2 years ago

1.4.98

2 years ago

1.4.13

2 years ago

1.4.12

2 years ago

1.4.15

2 years ago

1.4.58

2 years ago

1.4.14

2 years ago

1.4.16

2 years ago

1.0.0-alpha

3 years ago

1.0.1-alpha

3 years ago