php cURL错误在facebook api [英] php cURL error in facebook api
问题描述
我使用 php cURL
获取facebook api数据。一些代码在这里。第一个 cURL
get access_token
然后查询以下内容。但是我收到错误警告:无效的参数提供foreach()
然后我回应一个 $ body
,回错误消息:
I use php cURL
to get facebook api data. some code here. first cURL
get access_token
then query something below. But I get error Warning: Invalid argument supplied for foreach()
then I echo a $body
, back error message:
HTTP / 1.1 400 Bad Request Cache-Control:no-store Content-Type:text / javascript; charset = UTF-8 Expires:Sat,01 Jan 2000 00:00:00 GMT P3P:CP =Facebook没有P3P政策,了解原因: http://fb.me/p3p Pragma:no-cache WWW-Authenticate:OAuthFacebook Platforminvalid_request不支持的帖子请求。 X-FB-Rev:386815 Set-Cookie:datr = iOPoTeHtN_Q9AO5Y4LpEXwyV; expires = Sun,2013年6月02日13:37:12 GMT; path = /; domain = .facebook.com; X-FB-Server:10.28.8.130 X-Cnection:close Date:Fri,03 Jun 2011 13:37:12 GMT Content-Length:79 {error:{type:GraphMethodException,message :不支持的帖子请求。}}
HTTP/1.1 400 Bad Request Cache-Control: no-store Content-Type: text/javascript; charset=UTF-8 Expires: Sat, 01 Jan 2000 00:00:00 GMT P3P: CP="Facebook does not have a P3P policy. Learn why here: http://fb.me/p3p" Pragma: no-cache WWW-Authenticate: OAuth "Facebook Platform" "invalid_request" "Unsupported post request." X-FB-Rev: 386815 Set-Cookie: datr=iOPoTeHtN_Q9AO5Y4LpEXwyV; expires=Sun, 02-Jun-2013 13:37:12 GMT; path=/; domain=.facebook.com; httponly X-FB-Server: 10.28.8.130 X-Cnection: close Date: Fri, 03 Jun 2011 13:37:12 GMT Content-Length: 79 {"error":{"type":"GraphMethodException","message":"Unsupported post request."}}
是 cURL
谢谢。
php代码
$APPID='14017XXXXXXXXXX';
$APPSECRET='7702362a5f6d605882f1beXXXXXXXXXX';
$action="https://graph.facebook.com/oauth/access_token?client_id=".$APPID."&client_secret=".$APPSECRET."&grant_type=client_credentials" ;
$ch = curl_init($action);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt($ch, CURLOPT_POST, true );
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERAGENT , 'Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1');
$r=curl_exec($ch);
$access_token=substr($r,13);
//echo $access_token; // echo 14017XXXXXXXXXX|LdTccOQAcHWrT2RCwXXXXXXXXXX
curl_close($ch);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://graph.facebook.com/search?access_token=".$access_token."&q=sashimi&limit=20&type=page&scope=publish_stream,offline_access,user_status,read_stream");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$body = curl_exec($ch);
curl_close($ch);
$status_list = json_decode($body,true);
foreach ($status_list['data'] as $status_list) {
echo $status_list['id'];
}
json树:
{
"data": [
{
"name": "Sashimi",
"category": "Food/beverages",
"id": "61615549874"
},
{
"name": "Sashimi",
"category": "Restaurant/cafe",
"id": "185314048174674"
},
... ...
],
"paging": {
"next": "https://graph.facebook.com/search?access_token=140174749371026|LdTccOQAcHWrT2RCwfVCqPVH0IY&q=SASHIMI&limit=20&type=page&scope=publish_stream\u00252Coffline_access\u00252Cuser_status\u00252Cread_stream&offset=20"
}
}
推荐答案
你正在做一个post请求,但是对于搜索你需要做一个get请求。 Curl响应也显示。
The problem is you are doing a post request but for search you need to do a get request. Curl response also showing that.
{"error":{"type":"GraphMethodException","message":"Unsupported post request."}
只需删除 curl_setopt($ ch,CURLOPT_POST, 1);
。它会工作,它为我工作:)。
Just remove line curl_setopt($ch, CURLOPT_POST, 1);
. It will work and it worked for me :).
这篇关于php cURL错误在facebook api的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!