无主题 · 开发技术博客

WordPress自动同步到新浪微博头条文章

这篇文章我是来还债的,之前答应了几个网友会写一篇“WordPress 同步新浪微博头条文章”的博客,下面进入正题。

申请接口权限和前期准备工作,这里不做过多描述,如有问题请留言或直接请参考博主之前发表的文章 WordPress发博客后自动同步到新浪微博

不幸的是:由于种种原因,我的接口没有审核通过,所以最终没有测试成功,先给出代码,如果你有接口权限,那么请自行测试。文章结尾我会给出测试方法。

注意:文中代码没有经过测试,使用前请谨慎测试。

实现原理

在发布文章时,调用微博头条文章接口,实现博客文章与头条文章同步

接口文档简单说明

接口文档地址:http://open.weibo.com/wiki/2/proxy/article/publish

文档中使用 oauth2 授权方式,通过access_token 获得权限调用接口,为了适应Wordpress和代码编写简单,我们采用BaseAuth 授权方式。如果你对授权方式感兴趣,可以查看REST API 安全设计指南 这篇文章。

代码编写

以下代码增加到自己主题的functions.php文件中。

/** 
 * WordPress 同步文章到新浪微博头条文章 By 无主题博客 
 * 原文地址: http://wuzhuti.cn/1771.html 
 */  
function post_to_sina_weibo_toutiao($post_ID) {  
  if (wp_is_post_revision($post_ID)) return;//修订版本(更新)不发微博  
  $get_post_info = get_post($post_ID);  
  $get_post_centent = get_post($post_ID)->post_content;  
  $get_post_title = get_post($post_ID)->post_title;  
  if ($get_post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish') {  
    $appkey='3838258703';  
    $username='微博用户名';  
    $userpassword='微博密码';  
    $request = new WP_Http;  
    $status = '【' . strip_tags($get_post_title) . '】 ' . mb_strimwidth(strip_tags(apply_filters('the_content', $get_post_centent)) , 0, 132, '...') . ' 全文地址:' . get_permalink($post_ID);  
    $api_url = 'https://api.weibo.com/2/statuses/update.json';  
    $body = array(
        'title' => strip_tags($get_post_title),
        'content'=>strip_tags(apply_filters('the_content', $get_post_centent)),
        'cover'=>'',
        'summary'=>mb_strimwidth(strip_tags(apply_filters('the_content', $get_post_centent)) , 0, 110, '...')
        'text'>mb_strimwidth(strip_tags(apply_filters('the_content', $get_post_centent)) , 0, 110, '...')
        'source' => $appkey
    );  
    $headers = array('Authorization' => 'Basic ' . base64_encode("$username:$userpassword"));  
    $result = $request->post($api_url, array('body' => $body,'headers' => $headers));  
  }  
}  
add_action('publish_post', 'post_to_sina_weibo_toutiao', 0);//给发布文章增加一个分享微博头条文章的动作

以上代码没有经过测试,大家谨慎使用,修改前做好文件备份工作。

测试方法

首先在网站根目录创建 test-sync-sina.php 文件,文件内容如下

<?php
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
$appkey='3838258703';
$username='微博用户名';  
$userpassword='微博密码';  
$request = new WP_Http;  
$api_url = "https://api.weibo.com/proxy/article/publish.json";
$body = array(
        'title' => '这里是头条文章标题',
        'content'=>'这里是文章内容,支持一些html标签,详细请参考接口文档说明',
        'cover'=>'http://tc.sinaimg.cn/maxwidth.2048/tc.service.weibo.com/images_ifanr_cn/8ce1b0abab02ecbe4ee0a722bc89d918.jpg',//封面
        'summary'=>'文章导语,巴拉巴拉',
        'text'=>'这个是自动生成的短微博',
        'source' => $appkey
    );  
$headers = array('Authorization' => 'Basic ' . base64_encode("$username:$userpassword"));  
$result = $request->post($api_url, array('body' => $body,'headers' => $headers));

echo $result['body'];

因为我没有接口权限,所以我测试的结果是:

{"error":"Insufficient app permissions!","error_code":10014,"request":"/proxy/article/publish.json"}

如果你熟悉postman的使用,可以用postman工具来测试,操作比较方便。

大家在操作过程中遇到什么问题,欢迎大家留言讨论。

2016-11-30 更新

还没有答复,不知道能不能申请到接口

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

¥ 打赏博主
站内评论 新浪微博评论
发表评论
评论(10)
没有看到评论?强制刷新
评论 (10)
引用 (0)
  • 9楼
    http://www.hlddjwl.com葫芦岛网站建设 :

    这个好,正需要,我喜欢!

    2017.04.20 09:51 中国辽宁葫芦岛 | Windows 7 | Firefox 52.0 回复
  • 8楼
    http://blog.ymanz.com明月登楼 :

    我搞定了!代码有点儿不完善!不过,多谢了!

    2017.03.10 11:03 中国河南南阳 | Windows 10 | Chrome 56.0.2924.87 回复
  • 7楼
    http://blog.ymanz.com明月登楼 :

    /**
    * WordPress 同步文章到新浪微博头条文章 By 无主题博客
    * 原文地址: http://wuzhuti.cn/1771.html
    */
    function post_to_sina_weibo_toutiao($post_ID) {
    if (wp_is_post_revision($post_ID)) return;//修订版本(更新)不发微博
    $get_post_info = get_post($post_ID);
    $get_post_centent = get_post($post_ID)->post_content;
    $get_post_title = get_post($post_ID)->post_title;
    if ($get_post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish') {
    $appkey='xxxxxxxxx';
    $username='xxxxxxxxx';
    $userpassword='xxxxxxxxx';
    $request = new WP_Http;
    $status = '【' . strip_tags($get_post_title) . '】 ' . mb_strimwidth(strip_tags(apply_filters('the_content', $get_post_centent)) , 0, 132, '...') . ' 全文地址:' . get_permalink($post_ID);
    $api_url = 'https://api.weibo.com/2/statuses/update.json';
    $body = array(
    'title' => strip_tags($get_post_title),
    'content'=>strip_tags(apply_filters('the_content', $get_post_centent)),
    'cover'=>'',
    'summary'=>mb_strimwidth(strip_tags(apply_filters('the_content', $get_post_centent)) , 0, 110, '...')
    'text'=>mb_strimwidth(strip_tags(apply_filters('the_content', $get_post_centent)) , 0, 110, '...')
    'source' => $appkey
    );
    $headers = array('Authorization' => 'Basic ' . base64_encode("$username:$userpassword"));
    $result = $request->post($api_url, array('body' => $body,'headers' => $headers));
    }
    }
    add_action('publish_post', 'post_to_sina_weibo_toutiao', 0);//给发布文章增加一个分享微博头条文章的动作

    上述代码,添加到function.php里后出现错误:
    Parse error: syntax error, unexpected ”text” (T_CONSTANT_ENCAPSED_STRING),
    也是text那一行!

    2017.03.10 10:22 中国河南南阳 | Windows 10 | Chrome 56.0.2924.87 回复
  • 6楼
    http://blog.ymanz.com明月登楼 :

    非常感谢你的回复,测试代码成功了!

    2017.03.10 10:18 中国河南南阳 | Windows 10 | Chrome 56.0.2924.87 回复
  • 5楼
    http://blog.ymanz.com明月登楼 :

    正式代码的text处有错误了!

    2017.03.10 01:11 中国河南南阳 | Windows 10 | Chrome 56.0.2924.87 回复
  • 4楼
    http://blog.ymanz.com明月登楼 :

    我申请接口通过了!但是用测试代码测试返回结果是:{“code”:10008,”msg”:”param text is empty”,”data”:[]}

    2017.03.10 01:04 中国河南南阳 | Windows 10 | Chrome 56.0.2924.87 回复

    • 管理员
      http://wuzhuti.cn小武 :

      @明月登楼 : 确实,’text’>’这个是自动生成的短微博’, 这句代码少了一个等号, 文章已经修改

      2017.03.10 10:13 中国辽宁大连 | Mac OS 10 | Safari 602.2.14 回复
  • 3楼
    http://blog.ymanz.com明月登楼的博客 :

    我也去申请了一下,看看能不能批下来了!

    2017.03.5 02:34 中国河南南阳 | Windows 10 | Chrome 56.0.2924.87 回复
  • 2楼
    http://www.zaoom.com早莫 :

    wordpress实现微博同步实现了,不过定时同步的时候会把网址同步错,这个不知道是怎么回事,早莫的的固定链接是分类+文章ID,定时发布同步文章之后链接成了文章ID了

    2017.02.24 12:51 中国上海上海 | Windows 7 | Chrome 54.0.2840.99 回复
  • 1楼
    http://www.leixuesong.cnPHP程序员雷雪松 :

    很有用的文章!!!学习了。

    2016.12.26 17:45 中国湖北武汉 | Windows 7 | Chrome 51.0.2704.106 回复
  • 还没有Trackback