我尝试使用easy curl通过curl获取facebook code
和access_token
。这样我就可以将信息发布到我的墙上。我知道sdk
,但如果我只使用简单curl
方式?
一些错误返回:
Method Not Implemented
Invalid method in request
这是我的代码。顺便说一句:如果{1}}在1小时内仍然有效,如何记住?{1}}感谢。
access_token
编辑:
$code_url = "https://graph.facebook.com/oauth/authorize?client_id=".$app_id."&redirect_uri=".urlencode($canvas_page_url)."&type=client_cred&display=page&scope=user_photos,publish_stream,read_stream,user_likes";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$code_url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1);
curl_setopt($ch, CURLOPT_HEADER ,0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,1);
$fb_code = curl_exec($ch); // get code
curl_close($ch);
$token_url = "https://graph.facebook.com/oauth/access_token?client_id=".$app_id."&client_secret=".$app_secret."&redirect_uri=".urlencode($canvas_page_url)."&code=".$fb_code."";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,$token_url);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION ,1);
curl_setopt($curl, CURLOPT_HEADER ,0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER ,1);
$result = curl_exec($curl);
curl_close($curl);
echo $result; //get token for post to wall
答案 0 :(得分:5)
尝试使用这些辅助方法,这些方法将对图API进行cURL调用并返回应用程序access_token。
此函数接受一个url和一组参数,并通过cURL进行POST:
function post_url($url, $params) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params, null, '&'));
$ret = curl_exec($ch);
curl_close($ch);
return $ret;
}
此功能会获取developer app中提供的应用ID和密码,并为您的应用返回有效的access_token:
function get_app_access_token($app_id, $secret) {
$url = 'https://graph.facebook.com/oauth/access_token';
$token_params = array(
"type" => "client_cred",
"client_id" => $app_id,
"client_secret" => $secret
);
return str_replace('access_token=', '', post_url($url, $token_params));
}
您可以像$token = get_app_access_token('APP_ID','SEKRET');
答案 1 :(得分:2)
他们真的应该在FB指南中更清楚,但这对我有用。不像许多人在网上说的那样,你不做GET卷曲通话,但你仍然进行POST通话。
那么,你发布的网址是“https://graph.facebook.com/oauth/access_token?”
然后,您将为CURLOPT_POSTFIELDS提供的POST变量将类似于:
"client_id=YOUR_CLIENT_ID&redirect_uri=" . urlencode("YOUR_URL") . "&client_secret=YOUR_CLIENT_SECRET&code=YOUR_RECEIVED_CODE"
我确实试图让这个工作至少1.5小时。每次我在浏览器中访问URL都很好,每次我尝试运行GET curl命令,或者POST命令,其中所有变量仍然在url中(并且未在POSTFIELDS中指定),它失败了。真的很烦人。