Ver Fonte

bug fix

nieyuge há 2 anos atrás
pai
commit
737bc11bb1
2 ficheiros alterados com 54 adições e 58 exclusões
  1. 41 58
      components/buttonLogin.vue
  2. 13 0
      utils/help.js

+ 41 - 58
components/buttonLogin.vue

@@ -4,15 +4,15 @@
 </template>
 
 <script>
-import { getStorage, setStorage, removeStorage, storageKey, getOauthUrl, jumpUrl } from '../utils/help';
+import { getStorage, setStorage, removeStorage, storageKey, getOauthUrl, jumpUrl, OSDetect } from '../utils/help';
 import { postRequest } from '../http';
 
 export default {
     name: 'buttonLogin',
     computed: {
         userInfo() {
-			return getStorage(storageKey.userInfo);
-		}
+            return getStorage(storageKey.userInfo);
+        }
     },
     data() {
         return {
@@ -29,52 +29,35 @@ export default {
                 this.$emit('success', this.userInfo)
             } else {
                 // 未登录
-                let isiOS = !!window.navigator.userAgent.match(/\(i\[^;]+;( U;)? CPU.+Mac OS X/)
-                if (isiOS) {
-                    this.twitterIosAuth()
-                } else {
-                    this.twitterAndroidAuth()
-                }
-                
+                this.twitterAuth()
             }
         },
-        async twitterIosAuth() {
-            let win = window.open();
-			    win.opener = null;
-            postRequest(`/denet/user/twitterRequestToken`, {
-				params: {
-					oauthCallback: `${jumpUrl}authlogin`,
-				},
-			}).then(({ code, data }) => {
-                if (code == 0) {
-                    win.location.href = getOauthUrl(data.authToken);
-                    // timer
-                    this.timer = setInterval(() => {
-						if (win && win.closed) {
-							clearInterval(this.timer);
-							this.twitterLogin(data);
-						}
-					}, 500);
-                } else {
-                    this.$emit('error')
-                }
-            })
-        },
-        async twitterAndroidAuth() {
+        async twitterAuth() {
+            let win
+            if (OSDetect() === 'ios') {
+                win = window.open();
+                win.opener = null;
+            }
+
             postRequest(`/denet/user/twitterRequestToken`, {
-				params: {
-					oauthCallback: `${jumpUrl}authlogin`,
-				},
-			}).then(({ code, data }) => {
+                params: {
+                    oauthCallback: `${jumpUrl}authlogin`,
+                },
+            }).then(({ code, data }) => {
                 if (code == 0) {
-                    let win = window.open(getOauthUrl(data.authToken));
+                    if (OSDetect() === 'ios') {
+                        win.location.href = getOauthUrl(data.authToken);
+                    } else {
+                        win = window.open(getOauthUrl(data.authToken));
+                    }
+
                     // timer
                     this.timer = setInterval(() => {
-						if (win && win.closed) {
-							clearInterval(this.timer);
-							this.twitterLogin(data);
-						}
-					}, 500);
+                        if (win && win.closed) {
+                            clearInterval(this.timer);
+                            this.twitterLogin(data);
+                        }
+                    }, 500);
                 } else {
                     this.$emit('error')
                 }
@@ -83,24 +66,24 @@ export default {
         twitterLogin(authData) {
             let verifier = getStorage(storageKey.verifier);
             if (verifier) {
-				postRequest(`/denet/user/twitterLogin`, {
-					params: {
-						consumerKey: authData.consumerKey,
-						oauthToken: authData.authToken,
-						oauthVerifier: verifier,
-					},
-				}).then(({ code, data }) => {
-					if (code == 0) {
-						setStorage(storageKey.userInfo, data);
-						removeStorage(storageKey.verifier);
+                postRequest(`/denet/user/twitterLogin`, {
+                    params: {
+                        consumerKey: authData.consumerKey,
+                        oauthToken: authData.authToken,
+                        oauthVerifier: verifier,
+                    },
+                }).then(({ code, data }) => {
+                    if (code == 0) {
+                        setStorage(storageKey.userInfo, data);
+                        removeStorage(storageKey.verifier);
                         this.$emit('success', data)
-					} else {
+                    } else {
                         this.$emit('error')
-					}
-				});
-			} else {
+                    }
+                });
+            } else {
                 this.$emit('error')
-			}
+            }
         }
     }
 }

+ 13 - 0
utils/help.js

@@ -264,3 +264,16 @@ export const maskUrl = (params, isMain = true) => {
 	// url
 	return url.replace(`ethereum:`, `https://metamask.app.link/send/`);
 }
+
+export const OSDetect = () => {
+    let u = navigator.userAgent;
+    // 安卓
+    if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {
+        return 'android';
+    }
+
+    // iOS
+    if (u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)) {
+        return 'ios';
+    }
+};