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 범위 정보를 가져옵니다. 또한 문제 없습니다. 그렇다면 access_tokengoogleCredential = firebase.auth.GoogleAuthProvider.credential(token);을 사용하여 Firebase로 교체해야합니다.

나는 이오닉 2를 사용하고 테스트를 위해 내 아이폰의 xcode에 배포하고있다. 따라서 Firebase doc은 Google 사용자가 수동으로 처리하는 것이 Google 사용자의 id_token에서 발생했다고 말합니다. 하지만 ng2-cordova-oauth에서 얻은 토큰은 Google 토큰입니다. 이것이 내가 Firebase에 필요한 토큰입니까? 매우 혼란 스럽습니다. 도와주세요!

답변

0

Google 자격 증명을 사용하면 첫 번째 매개 변수는 Google ID 토큰입니다. 두 번째 매개 변수는 액세스 토큰입니다. 다음을 시도해보십시오. firebase.auth.GoogleAuthProvider.credential (null, token);