我有一个Ionic应用程序(@ionic/angular: 4.0.0-beta.17
),并且正在使用Firebase作为我的身份验证器(通过@ angular / fire)。
每当我尝试使用电话号码登录时,我都会通过该号码(如E.164)和appVerifier
进行登录,并进行了隐身验证。我可以向您保证这些值是有效的。
firebase.auth().signInWithPhoneNumber(phoneNumber, appVerifier)
出乎意料的是,我从Recaptcha收到TypeError:
错误TypeError:无法分配为只读对象'[object Object]'的属性'taskData'
at HTMLDivElement.addEventListener (zone.js:1829) at gg (recaptcha__iw.js:91) at Vp (recaptcha__iw.js:89) at He.Ot.A (recaptcha__iw.js:163) at am (recaptcha__iw.js:566) at He.am.render (recaptcha__iw.js:565) at iW (recaptcha__iw.js:569) at Oi (recaptcha__iw.js:578) at jJ.w.CQ.jJ.a0.jJ.Eu (recaptcha__iw.js:573) at Object.Ei [as reset] (recaptcha__iw.js:574)
这是身份验证的整个过程:
return firebase.auth().signInWithPhoneNumber(phoneNumber, appVerifier)
.then(result => (windowRef as any).confirmationResult = result)
.catch(err => { // <-- returns error
appVerifier.render().then(widgetId => grecaptcha.reset(widgetId));
return Promise.reject(err);
});
发生该错误后,我又遇到了有关此行的错误:
appVerifier.render().then(widgetId => grecaptcha.reset(widgetId));
未捕获的TypeError:无法读取null的属性'then'
at jJ.w.CQ.jJ.a0.jJ.Eu (recaptcha__iw.js:573) at Object.Ei [as reset] (recaptcha__iw.js:574) at auth.state.ts:107 <----- (the line I mentioned above) at e.g (auth.esm.js:17) at Fb (auth.esm.js:20) at Bb (auth.esm.js:20) at A.push../node_modules/@firebase/auth/dist/auth.esm.js.g.Xb (auth.esm.js:19) at kb (auth.esm.js:13) at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:388) at Zone.push../node_modules/zone.js/dist/zone.js.Zone.run (zone.js:138)
由于某种原因,当我将软件包@ionic/angular
降级到版本4.0.0-beta.15
时,它似乎可以工作。我不知道幕后发生了什么。
我不确定此错误是否与Ionic或Recaptcha或Firebase有关。
"dependencies": {
"@angular/common": "~7.0.0",
"@angular/core": "~7.0.0",
"@angular/fire": "~5.1.0",
"@angular/forms": "~7.0.0",
"@angular/http": "~7.0.0",
"@angular/platform-browser": "~7.0.0",
"@angular/platform-browser-dynamic": "~7.0.0",
"@angular/router": "~7.0.0",
"@fortawesome/angular-fontawesome": "^0.3.0",
"@fortawesome/fontawesome-svg-core": "^1.2.8",
"@fortawesome/pro-light-svg-icons": "^5.5.0",
"@fortawesome/pro-regular-svg-icons": "^5.5.0",
"@fortawesome/pro-solid-svg-icons": "^5.5.0",
"@ionic-native/core": "^5.0.0-beta.21",
"@ionic-native/google-maps": "^5.0.0-beta.25",
"@ionic-native/social-sharing": "^5.0.0-beta.21",
"@ionic-native/splash-screen": "5.0.0-beta.21",
"@ionic-native/status-bar": "5.0.0-beta.21",
"@ionic/angular": "4.0.0-beta.17",
"@ionic/pro": "^2.0.3",
"@ngx-translate/core": "^11.0.0",
"@ngx-translate/http-loader": "^4.0.0",
"@ngxs/devtools-plugin": "^3.2.0",
"@ngxs/form-plugin": "^3.2.0",
"@ngxs/router-plugin": "^3.2.0",
"@ngxs/store": "^3.2.0",
"cordova-browser": "5.0.4",
"cordova-plugin-device": "^2.0.2",
"cordova-plugin-googlemaps": "2.4.6",
"cordova-plugin-ionic-keyboard": "^2.1.3",
"cordova-plugin-ionic-webview": "^2.2.1",
"cordova-plugin-splashscreen": "^5.0.2",
"cordova-plugin-statusbar": "^2.4.2",
"cordova-plugin-whitelist": "^1.3.3",
"core-js": "^2.5.3",
"firebase": "^5.5.8",
"libphonenumber-js": "^1.6.5",
"lodash": "^4.17.11",
"rxjs": "6.2.2",
"zone.js": "^0.8.26"
},
"devDependencies": {
"@angular-devkit/architect": "~0.8.5",
"@angular-devkit/build-angular": "~0.8.5",
"@angular-devkit/core": "~0.8.5",
"@angular-devkit/schematics": "~0.8.5",
"@angular/cli": "~7.0.0",
"@angular/compiler": "~7.0.0",
"@angular/compiler-cli": "~7.0.0",
"@angular/language-service": "~7.0.0",
"@ionic/angular-toolkit": "^1.0.0",
"@types/jasmine": "~2.8.6",
"@types/jasminewd2": "~2.0.3",
"@types/lodash": "^4.14.119",
"@types/node": "~10.12.0",
"codelyzer": "~4.5.0",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~3.0.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.0",
"karma-jasmine": "~1.1.1",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~5.4.0",
"ts-node": "~7.0.0",
"tslint": "~5.11.0",
"typescript": "~3.1.6"
},
Ionic:
ionic (Ionic CLI) : 4.5.0 (C:\Users\Eliya\AppData\Roaming\npm\node_modules\ionic)
Ionic Framework : @ionic/angular 4.0.0-beta.17
@angular-devkit/build-angular : 0.8.8
@angular-devkit/schematics : 0.8.8
@angular/cli : 7.0.7
@ionic/angular-toolkit : 1.2.0
Cordova:
cordova (Cordova CLI) : not installed
Cordova Platforms : browser 5.0.4
Cordova Plugins : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 2.2.1, (and 5 other plugins)
System:
Android SDK Tools : 26.1.1 (E:\android-sdk)
NodeJS : v10.11.0 (C:\Program Files\nodejs\node.exe)
npm : 6.4.1
OS : Windows 10