前提・実現したいこと
FirebaseのFunctionを使ってYoutubeDataApiを定期実行し、Firestoreに保存したい。
フロントエンドにreact、バックエンドにFirebaseを使い、Youtubeの情報を表示するWEBサイトをポートフォリオ用に作成しています。
YouTubeApiを直接フロントから叩くのではなく、Firestoreに定期的に保存し、そこにアクセスするAPI作成と、定期実行の処理をFunctionsで行いたいと考えています。
機能実装の過程でFiresotreへのデータの保存方法は既に理解できました。定期実行の手段もはGASでスケジュールした関数実行を考えています。
YoutubeApiからデータが受け取れているか確認したところ、
デプロイした関数の中でaxiosを使用してYoutubeApiを叩いた結果、思ったようにデータがかえってきませんでした。
発生している問題・エラーメッセージ
{}//デプロイしてGETメソッドでHTTP通信した結果
該当のソースコード
TypeScript
1import * as functions from 'firebase-functions'; 2import * as admin from 'firebase-admin'; 3import HttpRequest from 'axios'; 4const cors = require('cors')({ origin: true }); 5 6export const YoutubeDataApiChannels = functions 7 .region('asia-northeast1') 8 .https.onRequest((request, response) => { 9 cors(request, response, () => { 10 return HttpRequest.get( 11 'https://www.googleapis.com/youtube/v3/channels?part=id,snippet,statistics,contentDetails&id=チャンネルID&key=APIキー' 12 ) 13 .then((result) => { 14 response.json(result); 15 }) 16 .catch((error) => { 17 response.send(error); 18 }); 19 }); 20 });
試したこと
●APIテスターで関数内部のaxiosと同じYoutubeApiを叩いたところ目的のレスポンスが返ってきています。
●corsの記述は正直あまり理解できていませんが、海外の記事で同じようなものがあったので真似して書いています。これがないとcould not handleなんたらという別のエラーがかえってきます。
●GCPは従量課金プランです。(Functionsの外部通信は従量課金プランだけらしいので、Youtubeは外部になるのか?)
●resultの中身がどうにも確認できないです。そもそもYoutubeのデータが返ってきていないのか、respnse.json部分の記述がおかしいのかよくわかりません。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー