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_token
과 googleCredential = firebase.auth.GoogleAuthProvider.credential(token);
을 사용하여 Firebase로 교체해야합니다.
나는 이오닉 2를 사용하고 테스트를 위해 내 아이폰의 xcode에 배포하고있다. 따라서 Firebase doc은 Google 사용자가 수동으로 처리하는 것이 Google 사용자의 id_token
에서 발생했다고 말합니다. 하지만 ng2-cordova-oauth에서 얻은 토큰은 Google 토큰입니다. 이것이 내가 Firebase에 필요한 토큰입니까? 매우 혼란 스럽습니다. 도와주세요!