Facebook图片上传者(粉丝专页)

时间:2013-07-03 15:55:18

标签: facebook facebook-graph-api curl upload image

这是我的代码,我试图“Curl”它(file_get_contents由于某种原因无效)但是因为我无法真正得到 Curl

我现在已经忍受了10个小时了,我还是找不到!!!请帮助!!

<?php
$app_id = "xxxxx";
$app_secret = "xxxxx";
$fanpage_id ='3xxxxx';

$post_login_url = "xxxxxxxxxteszt.php";
$photo_url = "xxxxxxxxxx20130412104817.jpg";
$photo_caption = "sasdasd";
$code = $_REQUEST["code"];

//Obtain the access_token with publish_stream permission
if (!$code)
{
    $dialog_url= "http://www.facebook.com/dialog/oauth?"
    . "client_id=" .  $app_id
    . "&redirect_uri=" . urlencode( $post_login_url)
    .  "&scope=publish_stream,manage_pages";
    echo("<script>top.location.href='".$dialog_url."'</script>");
}
if(isset($_REQUEST['code'] ))
{
    print('<script>alert("asd");</script>');
    function curl($url)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt( $ch, CURLOPT_POSTFIELDS, $url );
    }
    $token_url="https://graph.facebook.com/oauth/access_token?"
    . "client_id=" . $app_id
    . "&client_secret=" . $app_secret
    . "&redirect_uri=" . urlencode( $post_login_url)
    . "&code=" . $code;
    print($code);
    $response = curl($token_url);
    print($response);
    $params = null;
    parse_str($response, $params);
    $access_token = $params['access_token'];
    // POST to Graph API endpoint to upload photos
    $graph_url= "https://graph.facebook.com/".$fanpage_id."/photos?"
    . "url=" . urlencode($photo_url)
    . "&message=" . urlencode($photo_caption)
    . "&method=POST"
    . "&access_token=" .$access_token;
    echo '<html><body>';
    echo curl($graph_url);
    echo '</body></html>';
}
?>

1 个答案:

答案 0 :(得分:4)

您不能只将网址传递给CURLOPT_POSTFIELDS选项。基本网址应在CURLOPT_URL选项中设置,参数在CURLOPT_POSTFIELDS中设置(使用PHP的http_build_query函数生成编码的查询字符串);

所以你的卷曲功能看起来像这样:

function curl($url,$parms)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($parms, null, '&'));
}

然后你会这样称呼它:

$token_url="https://graph.facebook.com/oauth/access_token";
$token_parms = array(
  "client_id" => $app_id,
  "client_secret" => $app_secret,
  "redirect_uri" => $post_login_url,
  "code" => $code
);
$response = curl($token_url, $token_parms);