2017-06-13 59 views
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" 
     ] 
    } 
} 

回答

0

您可以使用授權標頭髮送用戶名密碼。

請嘗試如下

使用URL作爲http://username:[email protected]/。在這種情況下,使用您的用戶名和密碼自動生成授權標題。