광범위하게 검색했지만 내 문제와 관련된 주제를 찾을 수 없어 새로운 질문을하기로했습니다 ...CURL 호출은 터미널에서 작동하지만 PHP에서는 지원되지 않습니다
내가 터미널에서 잘 작동 CURL을 사용하여 페이스 북 그래프 API에 배치 요청을 발행하기 위해 노력하고있어,하지만 단순히 PHP에서 ...
이 단계가 재현되지 않습니다1.) 그래프 API 탐색기에서 액세스 토큰을 얻습니다 (권한이 필요없고 유효한 토큰 만). 링크 : http://developers.facebook.com/tools/explorer
2) 다음 터미널 명령을 붙여 넣기 : 제대로 작동하려면 총 4 개 자리에 붙여에 (주의 사항, 당신은 필요)
curl \
-F 'access_token=PASTE_ACCESS_TOKEN_HERE' \
-F 'batch=[{"method":"GET","relative_url":"fql?q=SELECT+name+FROM+user+WHERE+uid%3Dme%28%29&access_token=PASTE_ACCESS_TOKEN_HERE"},{"method":"GET","relative_url":"fql?q=SELECT+name+FROM+user+WHERE+uid%3Dme%28%29&access_token=PASTE_ACCESS_TOKEN_HERE"},{"method":"GET","relative_url":"fql?q=SELECT+name+FROM+user+WHERE+uid%3Dme%28%29&access_token=PASTE_ACCESS_TOKEN_HERE"}]' \
https://graph.facebook.com
3) 터미널에서 실행! , 헤더 섹션을 많이 반환해야하며, body 섹션 (JSON 인코딩)에서 네 번 네 이름을 반환해야합니다.
4. 지금까지 모든 것이 작동해야합니다.
<?php
$url = 'https://graph.facebook.com';
$fields = array(
'access_token' => 'PASTE_ACCESS_TOKEN_HERE',
'batch' =>
'[{"method":"GET","relative_url":"fql?q=SELECT+name+FROM+user+WHERE+uid%3Dme%28%29&access_token=PASTE_ACCESS_TOKEN_HERE"},{"method":"GET","relative_url":"fql?q=SELECT+name+FROM+user+WHERE+uid%3Dme%28%29&access_token=PASTE_ACCESS_TOKEN_HERE"},{"method":"GET","relative_url":"fql?q=SELECT+name+FROM+user+WHERE+uid%3Dme%28%29&access_token=PASTE_ACCESS_TOKEN_HERE"}]'
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
$fields_string = rtrim($fields_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
print_r($result);
?>
6.) 코드를 실행, 당신은 (적어도 내가 할 수 ...)을 얻을해야합니다 : 여기에 잘못된 부분이 온다, 는 다음과 같은 PHP 스크립트의 4 자리에 다시 토큰을 붙여 Facebook에서 오류 메시지 : '{ "오류": { "메시지": "잘못된 액세스 토큰 ACCESS_TOKEN_HERE .... \"}] ","OAuthException ","code ": 190}} 1'
페이스 북은 JSON 닫기 중괄호가 액세스 토큰의 일부라고 생각하고이 오류를 반환하기 때문에 $ fields [ 'batch']의 끝에서 이스케이프 된 큰 따옴표와 중괄호를 제거하려고했습니다. , 그런 다음 배치 매개 변수가 JSON 문자열 (분명히 ...)
뭔가가 없거나이 Facebook의 잘못입니까? 그렇다면 왜 터미널 솔루션이 작동하는지 이해할 수 없습니까? 여기
은 BTW 공식 페이스 북 문서입니다 : 사전에 http://developers.facebook.com/docs/reference/api/batch
감사합니다!
편집 : (이것은 쉘 스크립트를 사용하기 때문에, 물론) 나는 (일시적으로) 해결 방법을 발견 , 이것은 작동합니다 :이 나쁜 솔루션 인 이유
이<?php
$result = shell_exec('curl \
-F \'access_token=PASTE_ACCESS_TOKEN_HERE\' \
-F \'batch=[{"method":"GET","relative_url":"fql?q=SELECT+name+FROM+user+WHERE+uid%3Dme%28%29&access_token=PASTE_ACCESS_TOKEN_HERE"},{"method":"GET","relative_url":"fql?q=SELECT+name+FROM+user+WHERE+uid%3Dme%28%29&access_token=PASTE_ACCESS_TOKEN_HERE"},{"method":"GET","relative_url":"fql?q=SELECT+name+FROM+user+WHERE+uid%3Dme%28%29&access_token=PASTE_ACCESS_TOKEN_HERE"}]\' \
https://graph.facebook.com');
print_r(json_decode($result),true);
?>
누군가가 알고 있나요 (I PHP-cURL을 사용하는 것보다)? 어딘가에 PHP에서 쉘 스크립트를 사용해서는 안되는 이유를 모르지만 왜 그런지 모르겠습니다 ...
고마워!
Facebook : https : //developers.facebook에서 문서에 대한 링크를 추가하는 것을 잊었습니다.co.kr/docs/reference/api/batch/ –
답변을 편집 할 수 있습니다. – Freelancer
전체적인 토큰을 보내고 있으므로 배치에서 모든 액세스 토큰을 제거하는 방법은 어떻습니까? 아니면 실제 배치에서 별도의 사용자를 쿼리하고 있습니까? –