1

FacebookのネイティブとAngularfire2(2.0.0-beta.2)を使用してIonic 2アプリにログインしようとしていますが、アクセストークンを取得しても、私はそれがまだ無効な信任状のエラーをスローする、angularfireのauth.login関数に渡そうとします。ここでAngularfire2 oauthログインで認証情報が無効です

は私の設定です:

firebaseAuthConfig({ 
    provider: AuthProviders.Facebook, 
    method: AuthMethods.OAuthToken, 
    remember: "default", 
    scope: ["email"] 
}) 

そしてここでは、私のログイン機能である:

login() { 
Facebook.login(["public_profile", "email", "user_friends"]) 
    .then((success) => { 
    console.log("Facebook success: " + JSON.stringify(success)); 
    this.af.auth.login(success.authResponse.accessToken, { provider: AuthProviders.Facebook }) 
     .then((success) => { 
     console.log("Firebase success: " + JSON.stringify(success)); 
     }) 
     .catch((error) => { 
     console.log("Firebase failure: " + JSON.stringify(error)); 
     }); 
    }) 
    .catch((error) => { 
    console.log("Facebook failure: " + JSON.stringify(error)); 
    }); 
} 

そして、ここでは、私は私にconsole.logで取得エラーです:

Facebook failure: {"code":"auth/argument-error","message":"signInWithCredential failed: First argument \"credential\" must be a valid credential."} 

私がauth.loginのために設定したキャッチではなく、Facebookのレベルでキャッチされているのは面白いことです。私はオブジェクトとして{ token: success.authResponse.accessToken }を含むいくつかの異なる方法でそれを渡そうとしましたが、私は今失われています。誰でも私が間違っていることを見るのを助けることができますか?ありがとう!

また、私はこれが関連しているとは思わないが、その場合には、私はこの「キャッチされていないが、私のthis.af.authによってスローされるような、操作のタイムアウトエラー」も受け取っている。サブスクライブコール。アプリはうまく動いていますが、おそらくログインが失敗する原因になる可能性があります。

答えて

2
import {Component} from '@angular/core'; 
import {Platform, ionicBootstrap} from 'ionic-angular'; 
import {StatusBar} from 'ionic-native'; 
import {HomePage} from './pages/home/home'; 
import {Facebook} from 'ionic-native'; 

import { 
    FIREBASE_PROVIDERS, defaultFirebase, 
    AngularFire, firebaseAuthConfig, AuthProviders, 
    AuthMethods 
} from 'angularfire2'; 


declare let firebase: any; // <== THERE IS AN ERROR IN THE .d.ts file 

@Component({ 
    template: '<ion-nav [root]="rootPage"></ion-nav>', 
    providers: [ 
    FIREBASE_PROVIDERS, 
    // Initialize Firebase app 
    defaultFirebase({}), 
    firebaseAuthConfig({}) 
    ] 
}) 

export class MyApp { 
    rootPage: any = HomePage; 

    constructor(platform: Platform, public af: AngularFire) { 
    platform.ready().then(() => { 
     // Okay, so the platform is ready and our plugins are available. 
     // Here you can do any higher level native things you might need. 
     StatusBar.styleDefault(); 


     Facebook.login(['email']) 
     .then((_response) => { 
      console.log(_response) 

      // IMPORTANT STEP !! 
      let creds = firebase.auth.FacebookAuthProvider.credential(_response.authResponse.accessToken) 

      this.af.auth.login(creds, 
      { 
       provider: AuthProviders.Facebook, 
       method: AuthMethods.OAuthToken, 
       remember: 'default', 
       scope: ['email'], 
      }) 
      .then((success) => { 
       console.log("Firebase success: " + JSON.stringify(success)); 
       alert(JSON.stringify(success)) 
      }) 
      .catch((error) => { 
       console.log("Firebase failure: " + JSON.stringify(error)); 
       alert(JSON.stringify(error)) 
      }); 

     }) 
     .catch((_error) => { console.log(_error) }) 
    }); 
    } 
} 

ionicBootstrap(MyApp); 

https://github.com/aaronksaunders/AngularFire2-Ionic2-Facebook

+0

ありがとうございます!まあ、それは正しい方向に向かっていると仮定するようにエラーを変更しました...今私はログイン後に完全に空のエラーを取得します。 「Facebookの失敗:{}」と表示されます。それがなぜ起こったのかあなたは考えていますか? – Cameron637

+0

電子メールにスコープを設定してみてください...あなたが正しくFacebookのアプリケーションを設定していることを確認してください..私は完全なアプリケーションを投稿します...しかし、これは今設定上の問題と思われます。 –

+0

私はあまりにも早く話したようです。そこに私はそれを修正し、今でも無効な資格情報のエラーを取得するので、ログイン機能の範囲で "firebase"を認識していないことによってスローされていた。私はそれに取り組んでいます私はあなたが私を助けたと思うので、私はあなたの答えをupvoteしますが、それは遅れていると私は明日それを見続ける必要があります。 – Cameron637

関連する問題