0

ng2-cordova-oauthから取得したアクセストークンを使用してFirebaseのサインインを要求するのに苦労しています。このguideはここではっきりしていません。ここに私のコードです。トークンを交換してng2-cordova-oauthを使用してFirebase V3にログインする方法

loginUser(): any { 

return new Promise((resolve, reject) => { 

    let token: any; 
    let fullData: any; 
    const oauth = new CordovaOauth(); 
    const provider = new Google({ 
    clientId: "[CLIENT ID]", 
    appScope: ["https://www.googleapis.com/auth/youtube", "email"] 
    }) 

    return oauth.logInVia(provider).then(success => { 

     console.log(success); 

     let jString = JSON.stringify(success); 
     let tokenObj = JSON.parse(jString); 

     token = tokenObj.access_token; 
     let headers = new Headers(); 
     let googleAPI = "https://www.googleapis.com/youtube/v3/channels?part=brandingSettings%2C+snippet%2C+id%2C+statistics&mine=true"; 
     headers.append('Authorization', 'Bearer ' + token); 
     headers.append('Content-Type', 'application/json'); 

     return this.http.get(googleAPI, { headers }) 
     .map(res => res.json()) 
     .subscribe(data => { 

      console.log(data); 

      fullData = { 
      uid: data.items[0].id, 
      photoURL: data.items[0].snippet.thumbnails.default.url, 
      name: data.items[0].snippet.title, 
      youtube_channel : data 
      } 

      let googleCredential = firebase.auth.GoogleAuthProvider.credential(token); 

      return firebase.auth().signInWithCredential(googleCredential).then((firebaseSuccess) => { 
       console.log("Firebase success: " + JSON.stringify(firebaseSuccess)); 
       return this.userProfile.child(fullData.uid).update(fullData).then(_ => { 
       resolve(fullData); 
       }); 
      }) 
     }) 


    }, (error) => { 
     console.error(JSON.stringify(error)); 
    }); 
}); 
} 

ので、コードは問題ありませんaccess_tokenからNG2-コルドバ-のOAuthを取得します。トークンを使用してYouTubeのスコープ情報を取得します。また問題ありません。それから私はを使ってFirebaseとaccess_tokenを交換する必要があります。これは400の悪い要求を与え続けます。

私はIonic 2を使用しており、テストのためにiphoneのxcodeにデプロイしています。だからFirebaseの医師は、Googleのサインインを手動で処理することは、Googleユーザーのid_tokenからだと言いました。しかし、ng2-cordova-oauthから得たトークンはGoogleのトークンです。これはFirebaseに必要なトークンですか?とても混乱するような。助けてください!

答えて

0

Googleの認証情報では、最初のパラメータはgoogle idトークンです。 2番目のパラメータはアクセストークンです。 以下を試してください: firebase.auth.GoogleAuthProvider.credential(null、token);

関連する問題