質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1345閲覧

【Rails】cURLのAPIを使ってページが読み込まれたらRailsでPOSTしたい

Hinoarashi.

総合スコア76

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/06/07 08:19

前提・実現したいこと

以下のFacebook公式のコンバージョンAPIを使ってRailsで実装したいです。

curl -X POST \ -F 'data=[ { "event_name": "Purchase", "event_time": 1623051043, "user_data": { "em": [ "309a0a5c3e211326ae75ca18196d301a9bdbd1a882a4d2569511033da23f0abd" ], "ph": [ "254aa248acb47dd654ca3ea53f48c2c26d641d23d7e2e93a1ec56258df7674c4", "6f4fcb9deaeadc8f9746ae76d97ce1239e98b404efe5da3ee0b7149740f89ad6" ], "client_ip_address": "123.123.123.123", "client_user_agent": "$CLIENT_USER_AGENT", "fbc": "fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890", "fbp": "fb.1.1558571054389.1098115397" }, "contents": [ { "id": "product123", "quantity": 1, "delivery_category": "home_delivery" } ], "custom_data": { "currency": "usd", "value": 123.45 }, "event_source_url": "http://jaspers-market.com/product/123", "action_source": "website" } ]' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v10.0/<PIXEL_ID>/events

facebook公式API

試したこと

cURLの代わりに、rubyでAPIリクエストを送信したい

上記のコードを参考に

system("curl -X POST \ -F 'data=[ { "event_name": "Purchase", "event_time": 1623051043, "user_data": { "em": [ "309a0a5c3e211326ae75ca18196d301a9bdbd1a882a4d2569511033da23f0abd" ], "ph": [ "254aa248acb47dd654ca3ea53f48c2c26d641d23d7e2e93a1ec56258df7674c4", "6f4fcb9deaeadc8f9746ae76d97ce1239e98b404efe5da3ee0b7149740f89ad6" ], "client_ip_address": "123.123.123.123", "client_user_agent": "$CLIENT_USER_AGENT", "fbc": "fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890", "fbp": "fb.1.1558571054389.1098115397" }, "contents": [ { "id": "product123", "quantity": 1, "delivery_category": "home_delivery" } ], "custom_data": { "currency": "usd", "value": 123.45 }, "event_source_url": "http://jaspers-market.com/product/123", "action_source": "website" } ]' \ -F 'access_token=アクセストークン' \ https://graph.facebook.com/v10.0/ピクセルID/events")

のように実装してみましたが、エラーがでます。

発生している問題・エラーメッセージ

syntax error, unexpected tIDENTIFIER, expecting ')' "event_name": "Purchase", ^ rb:14: syntax error, unexpected tCONSTANT, expecting keyword_end "event_name": "Purchase", ^ rb:15: syntax error, unexpected tIDENTIFIER, expecting keyword_end "event_time": 1623051043, ^ rb:16: syntax error, unexpected tIDENTIFIER, expecting keyword_end "user_data": { ^ rb:17: syntax error, unexpected tIDENTIFIER, expecting keyword_end "em": [ ^ rb:18: syntax error, unexpected tINTEGER, expecting keyword_end "309a0a5c3e211326ae75ca18196d301a9 ^ rb:20: syntax error, unexpected tIDENTIFIER, expecting keyword_end "ph": [ ^ rb:21: syntax error, unexpected tINTEGER, expecting keyword_end "254aa248acb47dd654ca3ea53f48c2c26 ^ rb:22: syntax error, unexpected tINTEGER, expecting keyword_end "6f4fcb9deaeadc8f9746ae76d97ce12 ^ rb:24: syntax error, unexpected tIDENTIFIER, expecting keyword_end "client_ip_address": "123.123.123.123", ^ rb:24: unexpected fraction part after numeric literal "client_ip_address": "123.123.123.123", ^ rb:24: syntax error, unexpected tFLOAT, expecting keyword_end ent_ip_address": "123.123.123.123", ^ ・・・

cURLはあまり触れたことがなく、自分なりに調べてみてもなかなか正解にたどり着くことができません。
何かアドバイスなどございましたら力を貸していただけると幸いです。

何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

標準添付ライブラリの Net::HTTP をつかってほしいな、
とは思いますが初心者ではまだ壁ありそうですから、いまの実装で進めるとして、
system("curl -X POST の ダブルコーテーションが "event_name の ダブルコーテーションで閉じてしまっているので、ここで system() とするのでしょう、と言われてます
案1 ' ' の中にある1"\" に書き換える
案2 arg = "curl -X POST .... https://graph.facebook.com/v10.0/ピクセルID/events"
とし system( arg )

投稿2021/06/08 12:57

winterboum

総合スコア23324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

asm

2021/06/08 14:29

%x()という手もあります。
Hinoarashi.

2021/06/21 08:29

winterboum様 asm様 返信遅れてすいません。 ありがとうございます、大変参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問