2017-11-16 6 views
0

"getUser"メソッドでfacebookからユーザーを取得しようとしましたが、 "property _backendがtypeof Httpに見つかりません"というエラーが表示されます。 理由は何ですか?はhttp.getでfacebookからユーザーを取得しようとしました

ここに私のコード:

export class User { 
    http:Http; 
    constructor() { 
     this.http = Http; 
    } 

    public createUser(user,token) { 
     firebase.database().ref("Users/"+user.uid).set({ 
      name : user.displayname, 
      token : token 
     }); 
    } 

    public removeUser(user) { 

    } 

    public getUserToken(id) { 
     return firebase.database().ref("Users/"+id).child("token"); 
    } 

    public getUser(token) { 
     //let http : Http; 
     return this.http.get("https://graph.facebook.com/me?access_token="+token+"&fields=id,name,picture") 
     .subscribe(data => data.json()); 
    } 
} 

私は、ユーザーからのインスタンスを作るために、ここでのgetUserを呼び出そうとしました:

export class HomePage { 

    constructor(public navCtrl: NavController,http : Http,public nav : 
    Nav,public loadingCtrl : LoadingController) { 

    let me = this; 
    let token; 
    let user; 
    let facebookUser; 
    let userClass = new User(); 



    firebase.auth().getRedirectResult().then(function(result){ 
     me.presentLoadingCustom(); 

     user = result.user.providerData[0]; 
     token = result.credential.accessToken; 
     facebookUser = userClass.getUser(token); 

     userClass.createUser(user,token); 
     nav.setRoot(IndexPage,{user : facebookUser}); 

    }); 

}

+0

はどこのhttp import文のですか? – KHAN

+0

import {Http} from "@ angular/http";私のクラスの上に – leo180593

+0

なぜあなたはクラスメソッドと一緒にクラス(モデル)にhttpを注入しようとしていますか?なぜサービスでhttp.getリクエストを作成してから、Userモデル(インターフェイスまたはクラス)にデータを割り当てるだけですか?たぶん、ドキュメントをチェックしてください:https://angular.io/tutorial/toh-pt6ここで 'HttpClient'を使用していることに留意してください。ただし、非推奨のHttpModuleを使用している場合は、https:// v4.angular.io/tutorial/toh-pt6私がコンストラクタにhttpプロバイダを注入すると問題が発生しますが、クラス "user"を与えなければなりません(現在のバージョンの角度に応じて) – Alex

答えて

0

をあなたが注入されていないようですコンストラクタのhttpプロバイダ。

import { Http } from '@angular/http'; 
export class User{ 

constructor(private http: Http){ 

} 

public getUser(token){ 

    //let http : Http; 

    return this.http.get("https://graph.facebook.com/me?access_token="+token+"&fields=id,name,picture") 
     .subscribe(data => data.json()); 
} 
} 

また、あなたはすでに、このように行われていない場合app.module.tsHttpModuleをインポートする必要があることがあります。

... 
import { HttpModule } from '@angular/http'; 

@NgModule({ 
    imports:  [HttpModule], 
    .... 
}) 
+0

"パラメータ – leo180593

+0

okです。あなたのアプリのコードをもっと共有できますか?あなたはどのようにユーザーを(そしてどこで)使用していますか?あなたの投稿を編集してください。 – e666

+0

大丈夫、私はそれをやった。私はクラス "HomePage"でインスタンスを作成しようとしました – leo180593

関連する問題