python - 【求助】PHP下如何使用微博床图

 碧落无双2502879687 发布于 2022-11-15 09:23

找到一篇关于微博床图的文章
http://www.jianshu.com/p/55fd...
具体是用python来实现的
我想要在php下来实现,具体实现代码如下:

        $post_data['pic1']=curl_file_create('d:/gg.jpg', 'image/jpeg', "gg.jpg");
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "http://picupload.service.weibo.com/interface/pic_upload.php?mime=image%2Fjpeg&data=base64&url=0&markpos=1&logo=&nick=0&marks=1&app=miniblog");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); 
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
        $output = curl_exec($ch);
        curl_close($ch);
        print_r($output);

但一直失败,不知道为什么?

{"code":"A20001","data":{"count":-1,"data":"eyJhcHAiOiJtaW5pYmxvZyIsImNvdW50IjotMSwidGltZSI6MTQ4NjE5NzM4OC43NjMsInBpY3MiOnsicGljXzEiOnsicmV0IjotMSwibmFtZSI6InBpY18xIn19fQ==","pics":{"pic_1":{"ret":-1,"name":"pic_1"}}}}

1.$cookie内容来自:

2.$post_data['pic1']中的pic1来自:

3 个回答
  • 额,楼主我访问您说的这里发现微博现在没用这个接口了


    然后与楼主一样同样感兴趣,想利用利用接口什么的,然后发现了 这个



    额,没错,裁好了的.. 这样就不知道这图床有什么用了..

    2022-11-15 09:33 回答
  • 这个应该是你调用第三方接口,看官方文档吧

    2022-11-15 09:33 回答
  • 你如果要用 http://picupload.service.weibo.com/interface/pic_upload.php?mime=image%2Fjpeg&data=base64&url=0&markpos=1&logo=&nick=0&marks=1&app=miniblog 这个 URL 的话
    POST 参数必须是 b64_data,值为经过 base64 编码后的字符串

    如果要使用 pic1 参数的话,则要用 multipart 方式进行上传,且 URL 中必须包含 cb 参数,cb 参数的值为 http://weibo.com/aj/static/upimgback.html?_wv=5&callback=STK_ijax_ 加(js)时间戳

    2种方法相比较的话,我个人倾向于 multipart 方法,因为 base64 编码会使上传文件的体积增加 1/3,不仅上传时间要更久,流量消耗也多了 1/3

    具体可看 http://js.t.sinajs.cn/t5/home... 或者
    用 fiddler 抓包看下 http://weibo.com/minipublish 的上传过程

    或者你可以用我造的轮子 PHP实现的微博图床上传轮子,支持 PHP 5.5.9 以上版本

    Update
    好吧,如果你一定要用 cURL 来实现的话,(我发布到 Github 上那个是因为 symfony/cache 要求 5.5.9 以上版本,所以就直接用更方便的 GuzzleHttp 库了,不然倒是有考虑过用原生 cURL 写)
    代码如下:

    <?php
    
    $cookie = 'your cookie';
    $ch = curl_init('http://picupload.service.weibo.com/interface/pic_upload.php'
        . '?mime=image%2Fjpeg&data=base64&url=0&markpos=1&logo=&nick=0&marks=1&app=miniblog');
    
    curl_setopt_array($ch, [
        CURLOPT_POST => true,
        CURLOPT_VERBOSE => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER => ["Cookie: $cookie"],
        CURLOPT_POSTFIELDS => ['b64_data' => base64_encode(file_get_contents('./img.jpg'))],
    ]);
    
    var_export(curl_exec($ch));

    执行结果如下:

    2022-11-15 09:33 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有