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に必要なトークンですか?とても混乱するような。助けてください!