内から値を返す私は、サービスを注入サービスを提供しています。子サービスはfacebook apiに接続し、親サービスにユーザのログインステータスを返すと仮定します。私が直面しています問題は、このFBのAPI呼び出しが約束を使用すると私は子サービス関数呼び出しの値に基づいて、親サービスにいくつかのロジックを実行しようとしています。これを行う正しい方法は何でしょうか?約束
これは私が試したものです:下記のコードが正常にFacebookのAPIおよび出力に接続
facebook.service.ts
注、 "接続" それが必要として**
checkLoginStatus() {
this.FB.getLoginStatus((response) => {
console.log(response.status); //outputs "connected"
});
}
はしかし、私は親サービスに約束の応答に含まれる値を返すようにしようとしていますので、以下のように、私は、コードを変更...とエラーを取得:
FB:any;
constructor() {
facebook().then((FB) => {
// Initialize SDK
FB.init({
appId : '1111111111111111',
cookie : true, // enable cookies to allow the server to access
// the session
xfbml : true, // parse social plugins on this page
version : 'v2.8' // use graph api version 2.5
});
this.FB = FB;
});
}
checkLoginStatus() {
this.FB.getLoginStatus((response) => {
return response.status; //"connected"
});
}
home.service.ts
constructor(@Inject(FacebookService) private fb:FacebookService) {
this.authenticateFacebook();
}
authenticateFacebook() {
this.fb.checkLoginStatus().then((response) => {
console.log(response); //should output connected
});
}
何も印刷されていない場合、this.FB.getLoginStatus()に渡されたコールバックは決して実行されません。おそらく、getLoginStatus()呼び出しが失敗したためです。おそらく、エラーの場合には2番目のコールバックが必要です。この 'FB.getLoginStatus()'メソッドのドキュメントはどこにありますか? –
@JBNizet、getLoginStatusは成功し、あなたが「返却」とはどういう意味ですか – AnchovyLegend
「接続」返します。あなたは 'this.FB.getLoginStatus()'によって返された値を使用していません。代わりにコールバックを渡しています。そして何も印刷されていないので、それが何を返すか(またはあなたのコールバックに渡す)どのように知っていますか?ここでも、FB.getLoginStatus()のドキュメントは何ですか?あなたが指摘したことは、Facebookのライブラリを読み込むことができます。 FB.getLoginStatus()メソッドはドキュメント化されていません。 –