0

我的 cUrl 有一个问题,它似乎不起作用,有人可以帮我吗?

我尝试使用 file_get_contetn 但它没有用:(我有一个错误我到处搜索但找不到任何东西:S

  <?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>';
          }
        ?>
4

2 回答 2

1

将您的 curl 功能更改为

 function curl($url){
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL,$url);
     curl_setopt($ch, CURLOPT_HEADER, 0);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

     $response = curl_exec($ch);
     if($response === false)
     {
         echo 'Curl error: ' . curl_error($ch);
     }
     else
     {
         $response = $response;
     }         

     curl_close($ch);
     return $response;
 }

这将执行您的 curl 请求并在发生错误时打印出错误。

编辑:我简化了 curl 执行,因为您正在格式化字符串,这实际上是作为 get 请求进行的,因此不需要您设置的 post 选项。试试这个,看看你会得到什么。

于 2013-07-03T17:14:59.953 回答
0

首先,在你的'if'语句中间声明你的curl函数有点奇怪,但其次你的curl函数中缺少一些基本元素。. .

您发起并设置选项,但您不执行!url_exec($ch)您的 curl 功能中缺少。curl 的最小使用应该是这样的:

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "example.com");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($ch);
    curl_close($ch);

http://php.net/manual/en/curl.examples.php

其次,您的 curl 函数没有任何输出!那么有什么可以回应的呢?

你的 curl 函数应该以 . . . return $output;

于 2013-07-03T17:27:44.957 回答