1
我在Ionic框架中頗爲新穎。 我得到這個錯誤,當我想註冊服務用戶 - 身份驗證在離子https://apps.ionic.io/app/授權標題丟失 - 離子
error
link
message "Authorization header is missing."
type "Unauthorized"
meta
request_id "243a7cd6-d598-4919-c9e9-ac6d4cf20c4b"
version "2.0.0-beta.0"
status 401
這是我app.module.ts
import { SplashScreen } from '@ionic-native/splash-screen';
import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';
import { LoginPage } from '../pages/login/login';
import { ChatPage } from '../pages/chat/chat';
import { About } from '../pages/about/about';
const cloudSettings: CloudSettings = {
'core': {
'app_id': '5818f930'
}
};
@NgModule({
declarations: [
MyApp,
HomePage,
LoginPage,
ChatPage,
About
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp),
CloudModule.forRoot(cloudSettings)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
HomePage,
LoginPage,
ChatPage,
About
],
providers: [
SplashScreen,
StatusBar,
{provide: ErrorHandler, useClass: IonicErrorHandler}
]
})
export class AppModule {}
這裏login.ts
import { Component } from '@angular/core';
import { NavController, AlertController, LoadingController } from 'ionic-angular';
import { Auth, User, UserDetails, IDetailedError } from '@ionic/cloud-angular';
import { HomePage } from '../home/home';
@Component({
selector: 'page-login',
templateUrl: 'login.html',
})
export class LoginPage {
showLogin:boolean = true;
email:string = '';
password:string = '';
name:string = '';
constructor(public navCtrl: NavController, public auth: Auth, public user: User, public alertCtrl: AlertController, public loadingCtrl:LoadingController) {}
ionViewDidLoad() {
console.log('Hello LoginPage Page');
}
/*
for both of these, if the right form is showing, process the form,
otherwise show it
*/
doLogin() {
if(this.showLogin) {
console.log('process login');
if(this.email === '' || this.password === '') {
let alert = this.alertCtrl.create({
title:'Register Error',
subTitle:'All fields are required',
buttons:['OK']
});
alert.present();
return;
}
let loader = this.loadingCtrl.create({
content: "Logging in..."
});
loader.present();
this.auth.login('basic', {'email':this.email, 'password':this.password}).then(() => {
console.log('ok i guess?');
loader.dismissAll();
this.navCtrl.setRoot(HomePage);
}, (err) => {
loader.dismissAll();
console.log(err.message);
let errors = '';
if(err.message === 'UNPROCESSABLE ENTITY') errors += 'Email isn\'t valid.<br/>';
if(err.message === 'UNAUTHORIZED') errors += 'Password is required.<br/>';
let alert = this.alertCtrl.create({
title:'Login Error',
subTitle:errors,
buttons:['OK']
});
alert.present();
});
} else {
this.showLogin = true;
}
}
doRegister() {
if(!this.showLogin) {
console.log('process register');
/*
do our own initial validation
*/
if(this.name === '' || this.email === '' || this.password === '') {
let alert = this.alertCtrl.create({
title:'Register Error',
subTitle:'All fields are required',
buttons:['OK']
});
alert.present();
return;
}
let details: UserDetails = {'email':this.email, 'password':this.password, 'name':this.name};
console.log(details);
let loader = this.loadingCtrl.create({
content: "Registering your account..."
});
loader.present();
this.auth.signup(details).then(() => {
console.log('ok SignUp');
this.auth.login('basic', {'email':details.email, 'password':details.password}).then(() => {
loader.dismissAll();
this.navCtrl.setRoot(HomePage);
});
}, (err:IDetailedError<string[]>) => {
loader.dismissAll();
let errors = '';
for(let e of err.details) {
console.log(e);
if(e === 'required_email') errors += 'Email is required.<br/>';
if(e === 'required_password') errors += 'Password is required.<br/>';
if(e === 'conflict_email') errors += 'A user with this email already exists.<br/>';
//don't need to worry about conflict_username
if(e === 'invalid_email') errors += 'Your email address isn\'t valid.';
}
let alert = this.alertCtrl.create({
title:'Register Error',
subTitle:errors,
buttons:['OK']
});
alert.present();
});
} else {
this.showLogin = false;
}
}
我不知道問題出在哪裏。 這是package.json
{
"name": "ionic-hello-world",
"version": "0.0.0",
"author": "Ionic Framework",
"homepage": "http://ionicframework.com/",
"private": true,
"scripts": {
"clean": "ionic-app-scripts clean",
"build": "ionic-app-scripts build",
"lint": "ionic-app-scripts lint",
"ionic:build": "ionic-app-scripts build",
"ionic:serve": "ionic-app-scripts serve"
},
"dependencies": {
"@angular/common": "4.0.2",
"@angular/compiler": "4.0.2",
"@angular/compiler-cli": "4.0.2",
"@angular/core": "4.0.2",
"@angular/forms": "4.0.2",
"@angular/http": "4.0.2",
"@angular/platform-browser": "4.0.2",
"@angular/platform-browser-dynamic": "4.0.2",
"@ionic-native/core": "3.6.1",
"@ionic-native/splash-screen": "^3.6.1",
"@ionic-native/status-bar": "3.6.1",
"@ionic/cloud-angular": "^0.12.0",
"@ionic/storage": "2.0.1",
"angular2-moment": "^1.3.3",
"cordova-android": "^6.2.2",
"cordova-plugin-console": "1.0.5",
"cordova-plugin-device": "1.1.4",
"cordova-plugin-splashscreen": "~4.0.1",
"cordova-plugin-statusbar": "2.2.2",
"cordova-plugin-whitelist": "1.3.1",
"firebase": "^4.0.0",
"ionic-angular": "3.1.1",
"ionic-plugin-keyboard": "~2.2.1",
"ionicons": "3.0.0",
"moment": "^2.18.1",
"rxjs": "5.1.1",
"socket.io-client": "^2.0.1",
"sw-toolbox": "3.4.0",
"zone.js": "^0.8.10"
},
"devDependencies": {
"@ionic/app-scripts": "1.3.7",
"typescript": "~2.2.1"
},
"cordovaPlugins": [
"cordova-plugin-whitelist",
"cordova-plugin-console",
"cordova-plugin-device",
"cordova-plugin-statusbar",
"cordova-plugin-splashscreen",
"ionic-plugin-keyboard"
],
"cordovaPlatforms": [],
"description": "KarolinaApp: An Ionic project",
"cordova": {
"plugins": {
"cordova-plugin-console": {},
"cordova-plugin-device": {},
"cordova-plugin-splashscreen": {},
"cordova-plugin-statusbar": {},
"cordova-plugin-whitelist": {},
"ionic-plugin-keyboard": {}
},
"platforms": [
"android"
]
}
}