# snail-login

> 蜗牛登录通用组件

Latest version **1.10.3** (published 2019-11-08) · ISC license · 0 weekly downloads

## Install

```sh
npm install snail-login
pnpm add snail-login
yarn add snail-login
bun add snail-login
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.10.3 |
| Published | 2019-11-08 |
| First published | 2018-07-26 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 4 |
| Unpacked size | 24.6 KB |
| Known vulnerabilities | 0 (+24 in 1 direct dependencies) |
| Install scripts | no |
| Author | hzliushichuan@corp.netease.com |
| Maintainers | liushichuan |

## Links

- npm: https://www.npmjs.com/package/snail-login
- npm.io page: https://npm.io/package/snail-login

## Dependencies (4)

- [axios](https://npm.io/package/axios.md) ^0.18.0
- [core-js](https://npm.io/package/core-js.md) ^2.6.3
- [nejsbridge](https://npm.io/package/nejsbridge.md) ^1.3.11
- [promise-polyfill](https://npm.io/package/promise-polyfill.md) ^8.1.0

## Recent versions

- 1.10.3 (latest) — 2019-11-08
- 1.10.2 — 2019-10-15
- 1.10.1 — 2019-09-02
- 1.10.0 — 2019-09-02
- 1.9.3 — 2019-09-02
- 1.9.2 — 2019-09-02
- 1.9.1 — 2019-09-02
- 1.9.0 — 2019-09-02
- 1.8.0 — 2019-08-30
- 1.7.2 — 2019-08-02
- 1.7.1 — 2019-08-02
- 1.7.0 — 2019-07-15
- 1.6.0 — 2019-07-11
- 1.5.0 — 2019-07-03
- 1.4.1 — 2019-04-10
- … 24 more at https://npm.io/package/snail-login/versions

## README

# 蜗牛登录组件
蜗牛登录组件，包括客户端内及客户端外的情况

## 用法

### 安装
```bash
npm i snail-login --save
```
或者
```bash
yarn add snail-login
```

### 使用
#### 获取全局唯一实例
主要用于多组件之间共享如同一个Login示例，防止被多次实例化，节省资源(比如多个组件中调用`isLogined`异步获取登录状态时，app中不会多次发送不必要的请求去重复获取)

```javascript
import {getLoginInstance} from 'snail-login'
const login = getLoginInstance(); //通过该方法获取的Login的实例全局唯一
```

### 常规用法
- 使用时需先实例化！！
- isLogined 判断当前页的登录状态，异步返回，返回值为Promise，详细用法见下面示例
```javascript
/**
* 获取页面的登陆状态，异步返回！！
* @param {Boolean} useH5Logic 是否在客户端环境下也使用H5的逻辑判断是否登录，只用户开发阶段，请勿用于生产环境（将会导致客户端登陆状态判断不准确）！！
* @returns {Promise} 返回一个Promise，如果当前用户已登录，会resolve用户的信息，否则会resolve null
*/
function isLogined(){...}
```
- login 主动登陆，客户端内会自动唤起登陆模块，客户端外则会跳转登陆页，参数及用法见以下示例
```javascript
/**
* 登录方法，客户端内会唤起登陆模块，客户端外会跳转到登陆页
* @param {Object} options - 登录方法的参数
* @param {string} options.type - 登陆方式，'mail/phone'，默认为mail即邮件登陆
* @param {string} options.h5Type - h5端内登陆方式，'mail/phone/weibo/qq/wechat'，直接使用制定的方式登陆，默认为空，即先进入登陆方式选择页
* @param {function} options.callback - 客户端内登陆后的回调函数，参数为userInfo，如果用户取消登陆，userInfo为null，正常登录，userInfo为用户的信息
* @param {string} options.targetUrl - 客户端外的登录成功的跳转地址，无需转义
*/
function login(){...}
```

### 示例
```javascript
import {getLoginInstance} from 'snail-login'
const login = getLoginInstance(); //通过该方法获取的Login的实例全局唯一
```
```javascript
import Login from 'snail-login'
const login = new Login();
//isLogined方法，判断当前页面登录状态，异步返回，客户端内已登录会自动进行同步登录
//已登录状态会直接返回用户的信息，未登录状态只返回null
async function checkLogin(){
  try {
    const userInfo = await login.isLogined();
    if(userInfo){
      this.isLogined = true;
      this.userInfo = userInfo;
    }else{
      this.isLogined = false;
    }
  } catch (error) {
    console.log('check login failed', error);
  }
},

//login方法，客户端内唤起登录模块，客户端外跳转登陆页
//可选参数：callback，客户端内登录成功后的回调方法，回调方法内的参数为userInfo，
//如果用户成功登陆，userInfo为用户信息，如果用户取消登录，userInfo为null
//可选参数: type, 'mail/phone'唤起默认登录方式还是手机号登陆方式，不传代表默认为mail
//可选参数: h5Type, 'mail/phone/weibo/qq/wechat'，直接使用制定的方式登陆，默认为空，即先进入登陆方式选择页
//可选参数：targetUrl，客户端外登陆成功后的跳转链接
login.login({
  type: 'phone',
  callback: userInfo => {
    if(userInfo){
      this.isLogined = true;
      this.userData = userInfo;
      this.getInfo();
    }
  },
  targetUrl: location.href
})
```

---
_Source: https://npm.io/package/snail-login · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
