## **流程圖劃分**
第三方登錄流程主要分為三個階段,分別是檢測登錄狀態、數據格式處理、狀態信息存入
## **檢測登錄狀態**
> 當應用頁面初始化時,會自動檢測本地應用中是否存在緩存,如果不存在緩存(`false`)則跳入到應用的介紹頁面;
> 若存在緩存,進行登錄狀態的判斷。如果緩存中存在用戶登錄過(`true`)的信息,則直接登錄;
> 如果用戶沒有進行過登錄或進行過退出登錄操作,則第三方登錄界面出現

## **數據格式處理**
> 進行第一階段后,用戶可根據自身的實際情況來判斷是使用QQ登錄還是微信登錄;
> 當用戶選擇其中一方時,會交由`other_login`方法進行數據格式的轉換。此方法存在的目的是會識別出用戶當前所選擇的第三方登錄,從而進行不同的數據轉換,方便應用將數據提交到數據庫當中

`other_login`方法所接收的參數分別是用戶第三方數據(`infoRes`),第三方登錄出版商(`tupe`),官方參數(`loginRes`)。當參數存在時,通過`switch`來判斷是QQ還是微信登錄,
> 當使用QQ登錄時,進行數據字段的轉換:并提交路徑
```
url = '/token/sys/login-wechat';
```
```
'openid': loginRes.authResult.openid,
'nickname': infoRes.userInfo.nickname,
'gender': infoRes.userInfo.gender,
'province': infoRes.userInfo.province,
'city': infoRes.userInfo.city,
'figureurl': infoRes.userInfo.figureurl_qq
```
> 當使用微信登錄時,進行數據字段的轉換:并提交路徑
```
url = '/token/sys/login-wechat';
```
```
'openid': loginRes.authResult.openid,
'nickname': infoRes.userInfo.nickName,
'sex': infoRes.userInfo.gender,
'province': infoRes.userInfo.province,
'city': infoRes.userInfo.city,
'country': infoRes.userInfo.country,
'headimgurl': infoRes.userInfo.avatarUrl,
'unionid': loginRes.authResult.unionid
```
## **狀態信息存入**
若成功將用戶登錄信息提交到數據庫,則執行`getRongyToken`方法,發送用戶登錄信息到后端的`getRongyToken`函數處理,返回的數據存入本地緩存中

> 注意:寫入本地緩存的過程中要注意數據字段的轉換
```
'appKey': 'xxxxxxx',
'token': res.token,
'targetIds': res.rongyUserId,
'targetName': res.userName,
'targetAvatar': res.portrait
```