問題
requestモジュールを用いて、face++というwebAPIにリクエストを送りたいのですがエラーが発生し上手くいかず困っています。
経緯と試してみたこと
フォームから写真を投稿すると、その写真に写っている人間の性別や年齢を表示する、単純なウェブサービスを作りたいと思っています。
クライアントユーザがフォームに写真を投稿する→cloud functionに登録してあるトリガーが発動して、cloud function側からwebAPIにリクエストを送る→レスポンス結果のjsonを受け取ったcloud function が写真を投稿したクライアントユーザに値を返すという流れを想定しています。
ですが、cloud functionからwebAPIを叩くのが上手くいきません。cloud functionに登録してある実際のコードが下記です。
let request = require("request"); let options = { url: "https://api-us.faceplusplus.com/facepp/v3/detect", headers: { "image_url":"質問する時に消しました。", "api_key":"質問する時に消しました。", "api_secret": "質問する時に消しました。", } }; function callback(error, response, body) { if (!error && response.statusCode == 200) { var info = JSON.parse(body); } } request.post(options, callback);
写真を投稿したユーザに結果を返す、ということはせず、まずcloud function側からリクエストを送ること自体上手くいくのかどうか試そうとしました。結果は上手くいきませんでした。
{"error_message":"MISSING_ARGUMENTS: api_key"}
api_keyがない、とのこと。
私はnode.jsを扱ったことはなくrequestやexpress、httpのモジュールについてもあまり分かりません、なのでリクエストを送る時に書いた上記のコードは下記のQiitaを参考にしました。
参考先ではapi_keyはheadresの中に入れています。リクエストを送るエンドポイントは違いますが、同じrequestモジュールを用いてるので同じ記述でも問題はないと思うのですが、APi側からはapi_Keyがないという旨のエラーが返ってきます。
var options = { url: "https://api-us.faceplusplus.com/facepp/v3/detect", image_url:"質問する時に消しました。", api_key:"質問する時に消しました。", api_secret: "質問する時に消しました。", } };
headresを消して、キーと値のペアで送ろうとしましたが、これも上手くいかず。
URLに?apy_key=というようなパラメータにして送ろうとしましたが、これも同じエラーが発生。
curlからはwebAPiを叩けるので、api_keyやapi_secretの値には間違いはありません。
質問
requestモジュールを用いて、webapiを叩く場合どのようにして、api_keyとapi_secretを記述すればよいのでしょうか?
ヒントとなるキーワードや記事を教えて欲しいです。
※また質問文の中で、質問とは直接関係はないが、用語の使い方を間違えていたり、何か大きな勘違いをしている節があれば、それらについて指摘などをしてくださると、成長に繋がるので指摘していただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/22 09:23
2020/01/22 14:52
2020/01/23 03:58