Posts tagged with curl

I'm using the following lines of code (PHP) after successfuly retriving the media URL and then storing it in the $mediaURL variable for the file request, but it's returning an empty string. Already tried with postman and it returns a 500 internal server error...

** Edited **

self::writeLog('Media URL: '.$mediaURL); self::writeLog('Preparing to download media - id: '.$media_id); $curl = curl_init($mediaURL); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $headers = array(     "Authorization: Bearer ".self::$auth_token, ); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); if (($resp = curl_exec($curl)) === false) {     self::writeLog('cURL Error: '.curl_error($curl)); } else if ($resp == '') {     self::writeLog('Empty string.');     self::writeLog('URL: '.$mediaURL);     self::writeLog('Headers: '.$headers[0]); } else {     self::writeLog($resp); }              
  • writeLog is just a method that I use to write these messages on a txt file.

Hi I want to use WhatsApp business API in my web application. I have tested it in postman.

Whenever run sample curl code when available in Facebook business page under WhatsApp tab, It run successfully with temporary access token and message delivered to recipient with Facebook saved template. But when I send only text message to recipient then API response become success with message Id but message not yet deliver to recipient.

My curl code sample given bellow

curl --location --request POST 'https://graph.facebook.com/v13.0/106433498743301/messages' \ --header 'Authorization: Bearer EAAOw8oNtvXkBAKk89CqJtyusjxk7c7qGSNS0quxqeZBRtjE5MYwZCK0USeGGLV4n56qNAuaRoRWZA2oCIS8zcz6U5UZAtQCOb6YQnjuXZBfLnyZAwsOZBpASpnNOvvz29T0Jn0aXgZAdo9VKmBv0CkNYuOeb1I7X0GZCEwLHPZBFpfOCj4K3S9CMPjBfYR5Jog06LC95P7UgCr5Fy2nqbRM5Ys' \ --header 'Content-Type: application/json' \ --data-raw '{ "messaging_product": "whatsapp", "preview_url": false, "recipient_type": "individual", "to": "xxxxxxx150", "type": "text", "text": { "body": "Test message" } }' 

I'm trying to use keywords ideas with Google Ads API Rest Interface that the support provided me the curl example, I generate the access token and tested and it works!(by the way my main gole is to use curl php in the back end but i'm just testing with curl command for now) when I use this curl command to generate keywords ideas:

curl -i --request POST https://googleads.googleapis.com/v9/customers/8519781266:generateKeywordIdeas \ --header "Content-Type: application/json" \ --header "login-customer-id: 2260416591" \ --header "developer-token: EPJhOWi8NVNfcvFIoxY5LA" \ --header "Authorization: Bearer ya29.A0ARrdaM9BxaCZnArsoqMUdTMLLqimKRHTw1inCD2pjheLeRnVzV96Kxpag0pktYg8E0gHhjkD1SgKd3lExbCJQ5_KgLWibmW5ykfwCXiQp8ZB90CdtPvabPlKweToM6dYj8KnSn5mu2Z0uxkRIl2bpnFHtDUw2g" \ --data '{ "keywordSeed": { "keywords": [ "coffee" ] } }' 

It prints this error

{   "error": {     "code": 400,     "message": "Invalid JSON payload received. Closing quote expected in string.\n\n^",     "status": "INVALID_ARGUMENT"   } } 

I tried something else like getting the list of the accounts and it works

C:\Users\MostafaEzzat>curl -f --request GET "https://googleads.googleapis.com/v9/customers:listAccessibleCustomers" \ --header "Content-Type: application/json" \ --header "developer-token: EPJhOWi8NVNfcvFIoxY5LA" \ --header "Authorization: Bearer ya29.A0ARrdaM98bLbmUOuR431zfEPVpDoab8_sD0Mq8W4fhrHtrmgfX8nSaPyzcW1ooaIKRSQColaOCtsp-cYhgSxa9KPQ_RI4Ctv0o5L9jTA-VhDKweVHozpEWChqFpp4yihhQe3bfr1Fksxd5NCiWvUh1GWIaruNPA" \ {   "resourceNames": [     "customers/8519781266",     "customers/2260416591",     "customers/3084026203",     "customers/2897861276",     "customers/6210187694",     "customers/3242362947"   ] } 

I'm trying to use curl with google ads api after generating access token through curl also and try to use this command

curl -i --request POST https://googleads.googleapis.com/v9/customers/2260416591:generateKeywordIdeas \ --header "Content-Type:application/json" \ --header "login-customer-id: 2260416591\ --header "developer-token: z2sb0uyekDzkMbiyNpAImg" \ --header "Authorization: Bearer ya29.A0ARrdaM9-2ZnG42VSl3mfrst_A8Rj5UoR6J0kJlMo-wGpCCgcOH1srTaSCKuVnHAoKHUPjx52bkPNUkLb7BydNycv7_6-5cryNOp7EZc6B4QK8vQ5-gI6Zy_XB1eCwIocwh508RIJxIgoPrx0PqOwLXlB332BeA" \ --data '{ "keywordSeed": { "keywords": [ "coffee" ] } }' 

I get this error

HTTP/1.0 411 Length Required Content-Type: text/html; charset=UTF-8 Referrer-Policy: no-referrer Content-Length: 1564 Date: Thu, 20 Jan 2022 13:07:10 GMT <!DOCTYPE html> <html lang=en>   <meta charset=utf-8>   <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">   <title>Error 411 (Length Required)!!1</title>   <style>     *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}   </style>   <a href=//www.google.com/><span id=logo aria-label=Google></span></a>   <p><b>411.</b> <ins>That’s an error.</ins>   <p>POST requests require a <code>Content-length</code> header.  <ins>That’s all we know.</ins> curl: (6) Could not resolve host: \ curl: (6) Could not resolve host: \ curl: (3) URL using bad/illegal format or missing URL curl: (6) Could not resolve host: Bearer curl: (3) nested brace in URL position 192: ya29.A0ARrdaM9-2ZnG42VSl3mfrst_A8Rj5UoR6J0kJlMo-wGpCCgcOH1srTaSCKuVnHAoKHUPjx52bkPNUkLb7BydNycv7_6-5cryNOp7EZc6B4QK8vQ5-gI6Zy_XB1eCwIocwh508RIJxIgoPrx0PqOwLXlB332BeA \ --data '{ keywordSeed: { keywords: [ coffee ] } }' 

What's the problem here? for sure this token not working anymore but this error dumped each time I try to use curl to generate keywordsideas through google ads api

Edit:

This the converted curl code it prints this error it's relating to A Outh 2.0 I used both Client ID and client secret and same error { "error": { "code": 401, "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.", "status": "UNAUTHENTICATED" } }

   $ch = curl_init();        curl_setopt($ch, CURLOPT_URL, 'https://googleads.googleapis.com/v9/customers/(8519781266):generateKeywordIdeas');        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);        curl_setopt($ch, CURLOPT_POST, 1);        curl_setopt($ch, CURLOPT_POSTFIELDS, "{\n\n\"keywordSeed\": {\n    \"keywords\": [\n    \"cofee\"\n  ]\n  }\n}");                $headers = array();        $headers[] = 'Content-Type: application/json';        $headers[] = 'Login-Customer-Id: (2260416591)';        $headers[] = 'Developer-Token: (z2sb0uyekDzkMbiyNpAImg';        $headers[] = 'Authorization: Bearer (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)';        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);                $result = curl_exec($ch);        if (curl_errno($ch)) {            echo 'Error:' . curl_error($ch);        }        print_r($result) ;        curl_close($ch);         

This curl command code with my google's data

curl -i --request POST https://googleads.googleapis.com/v9/customers/(8519781266):generateKeywordIdeas \ --header "Content-Type: application/json" \ --header "login-customer-id: (2260416591)" \ --header "developer-token: (z2sb0uyekDzkMbiyNpAImg" \ --header "Authorization: Bearer (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)" \ --data '{ "keywordSeed": {     "keywords": [     "cofee"   ]   } }' 

This's the curl command line

curl -i --request POST https://googleads.googleapis.com/v9/customers/(ACCOUNT NUMBER):generateKeywordIdeas \ --header "Content-Type: application/json" \ --header "login-customer-id: (MCC ID)" \ --header "developer-token: (DEVELOPER TOKEN" \ --header "Authorization: Bearer (ACCESS TOKEN)" \ --data '{ "keywordSeed": {     "keywords": [     "cofee"   ]   } }' 

and it prints this error

 C:\Users\MostafaEzzat>curl -i --request POST https://googleads.googleapis.com/v9/customers/(8519781266):generateKeywordIdeas \ HTTP/1.0 411 Length Required Content-Type: text/html; charset=UTF-8 Referrer-Policy: no-referrer Content-Length: 1564 Date: Sat, 01 Jan 2022 18:14:44 GMT <!DOCTYPE html> <html lang=en>   <meta charset=utf-8>   <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">   <title>Error 411 (Length Required)!!1</title>   <style>     *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}   </style>   <a href=//www.google.com/><span id=logo aria-label=Google></span></a>   <p><b>411.</b> <ins>That’s an error.</ins>   <p>POST requests require a <code>Content-length</code> header.  <ins>That’s all we know.</ins> curl: (6) Could not resolve host: \ C:\Users\MostafaEzzat>--header "Content-Type: application/json" \ '--header' is not recognized as an internal or external command, operable program or batch file. C:\Users\MostafaEzzat>--header "login-customer-id: (2260416591)" \ '--header' is not recognized as an internal or external command, operable program or batch file. C:\Users\MostafaEzzat>--header "developer-token: (z2sb0uyekDzkMbiyNpAImg" \ '--header' is not recognized as an internal or external command, operable program or batch file. C:\Users\MostafaEzzat>--header "Authorization: Bearer (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)" \ '--header' is not recognized as an internal or external command, operable program or batch file. C:\Users\MostafaEzzat>--data '{ '--data' is not recognized as an internal or external command, operable program or batch file. C:\Users\MostafaEzzat> C:\Users\MostafaEzzat>"keywordSeed": { '"keywordSeed":' is not recognized as an internal or external command, operable program or batch file. C:\Users\MostafaEzzat>    "keywords": [ '"keywords":' is not recognized as an internal or external command, operable program or batch file. C:\Users\MostafaEzzat>    "cofee" '"cofee"' is not recognized as an internal or external command, operable program or batch file. C:\Users\MostafaEzzat>  ] ']' is not recognized as an internal or external command, operable program or batch file. C:\Users\MostafaEzzat>  } '}' is not recognized as an internal or external command, operable program or batch file. C:\Users\MostafaEzzat>}' 

so I don't know honestly how to convert to Curl PHP and parse combine and all the parameters which is in this link https://developers.google.com/google-ads/api/rest/reference/rest/v9/KeywordPlanHistoricalMetrics