2017-03-22 18 views
1

Google認証でAngularFire2を使用すると、Firebaseアクセストークンが返されますが、ではなく、 Google APIで使用するGoogleアクセストークンが返されます。 AngularFire2認証からアクセストークンを取得する適切な方法は何ですか?AngularFire2 - Google APIのGoogle認証からのアクセストークンを使用

角度:2.4.9

Firebase:3.5.2

AngularFire:2.0.0-beta.8

ここplunkrです:

http://plnkr.co/edit/qIbtcp?p=preview

あなたは」コンストラクタの通知:

constructor(af: AngularFire, public auth$: AngularFireAuth, public http:Http) { 

     auth$.subscribe((state: FirebaseAuthState) => { 
     if(state){ 
      this.signedIn = true 
     } 
    }); 

    firebase.auth() 
     .getRedirectResult() 
     .then((result) => { 
     console.log('result', result); 
     if (result.credential) { 
      // This gives you a Google Access Token. 
      var token = result.credential.accessToken; 
      console.log('token',token) 
      this.getPeople(token) 
      .subscribe(
      people => console.log('people',people), 
      error => console.log(error)); 
     } 
     var user = result.user; 
     }) 
     .catch(err => console.log(err)); 
    } 

私がfirebase.auth()と呼ぶ場所は、Google Accessトークンを取得しようとする場所です。しかし、最初のログイン時に、私はこのエラーを取得する:

{ 
error: { 
code: 403, 
message: "Request had insufficient authentication scopes.", 
status: "PERMISSION_DENIED" 
} 
} 

私は、この例では、厳密にFirebase(無AngularFire2)と同じセットアップを試してみましたので、このが起こるべきではありません知っている:

https://embed.plnkr.co/zxOfRZ1PDDb7ee5qzIKW/

AngularFireとFirebaseの間で認証トークンを共有する際に問題がありますか?誰かがこの作業の例を持っていますか?

+0

2種類のトークンを使用して2つの場所で購読しています。 'result.credential.accessToken'は正しいもので、うまくいくと思います。しかし 'auth.getToken()'は使用できません。これはFirebase IDトークン(Googleのアクセストークンではありません)を返します。 – Kato

+0

@Kato申し訳ありませんが、私はauth.getToken()を取り出しました。私は '' 'result.credential.accessToken'''を使用しますが、403の許可が拒否されました。私のアプリがスコープを受け入れたにもかかわらず(認証方法:AngledAuthログインからのリダイレクト) –

答えて

1

はStackOverflowの上で同様の問題が見つかりました:

Using Firebase Auth to access the Google Calendar API

私は同じアプローチを使用して終了、あなたがでログインして、手動でGoogleのAPIのJavaScriptクライアントを使用し、その資格を使用する必要があると思われますファイアベース。

関連する問題