kn007的个人博客
♥ You are here: Home > 软件与网络 > SAE > WordPress 新文章同步微博详解

WordPress 新文章同步微博详解

by | 45 Comments

提醒:本文最后更新于 3737 天前,文中所描述的信息可能已发生改变,请仔细核实。

weibo_open其实这种文章应该挺多的,而且也不难。但确实不知发点啥了。。。但是不写点又不行。。。所以。。。

正常来说,只要按照本文的图片+文字,就可以搞定了。

月底暂时就这样了。超级忙啊。。。

9月就要到了,貌似中秋可能要加班,小烦。

言归正传。


首先,如图所示。在open.weibo.com/development,创建网站接入应用,审核通过率较快较高。

weibo-open-1

创建完,下一步,在open.weibo.com/webmaster,选择刚才创建的网站。可以看到状态是审核中。

weibo-open-2

不管,我们接着下一步,在左侧栏->网站信息,可以看到App Key和App Secret,复制下来,一会有用。

weibo-open-3

在左侧栏->网站信息->关联微博,关联一下我们自身的微博,就是创建了这个网站接入的微博帐号。

weibo-open-4

OK,下一步,我们在左侧栏->接口管理->授权机制,里面有个OAuth2.0 授权设置,编辑,为(取消)授权回调页填上:http://127.0.0.1/weibo/callback.php,详细如图所示:

weibo-open-5

接下来,下载附件weibo.rar。

内含windows NT5/6下可用的nginx+php和weibo授权文件。请务必解压后将目录放在C盘根目录下,目录下有说明文件,请仔细阅读,并且我做了bat文件,如下图所示。

weibo-open-6

先按1后按3,完成操作后,可得到如下信息:

weibo-open-7

再按2,结束掉nginx+php。

最后将下面这段代码放到functions.php,顺便改下里面的Access token的值就好了。

add_action('publish_post', 'new_post_weibo');
function new_post_weibo($post_ID) {
    global $wpdb;   
    if(!wp_is_post_revision($post_ID)){
        $access_token = "这里填入刚才获取到的Access token";
        $url = "https://api.weibo.com/2/statuses/update.json";
        $status = "我刚刚发布了新文章《".get_the_title($post_ID)."》,快来看看吧。详细内容请点击:".get_permalink($post_ID);
        $data = "access_token=" . $access_token . "&status=" . urlencode ($status);
        $output = json_decode(post_by_curl($url,$data));
    }
}
function post_by_curl($url, $data) {
	$ch = curl_init();
	@curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, TRUE );
	@curl_setopt ( $ch, CURLOPT_POST, TRUE );
	@curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );
	@curl_setopt ( $ch, CURLOPT_URL, $url );
	@curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE);
	$body = @curl_exec ( $ch );
	@curl_close ( $ch );
	return $body;
}

以上基于@大发@牧风两位的文章所作(添加了nginx+php、新版weibo开发平台的图)。感谢二位!

本来函数带有自动附带文章图片,但貌似用的人不多,而且有些是国内机机,带宽不大,而且流量又有限制。所以就没有完整分享。

因微博登录,恐怕没多少人使用,加上我也不愿意使后台用户过多,所以博客就没有创建。

微博登录可以不用利用token,因为非创建者的token,只有7天有效期,需要维护。而创建者自身token是5年有效期。

站内应用(SAE)也可以通过类似方式创建。

文章到此结束~EOF。

转载请注明转自:kn007的个人博客的《WordPress 新文章同步微博详解

donate
有所帮助?

Comments

45 Comments立即评论
  1. 太麻烦。。还有就是nginx

    1. MOD回复

      @郑永: 这跟nginx没啥关系吧!?我也是nginx

  2. 如何支持同步图片呢?我需要这个功能哦.. ;-)

    1. MOD回复

      @BestChao: 刚刚手机砸坏了。没心情。
      请自行看api。注意头类型不要错就行。

    2. @kn007: 深表同情,不过对于我技术盲而言,似乎有些困难,我换个时间再来请教您好了。

    3. MOD回复

      @BestChao: 嗯,再说吧,晚些时间我直接贴上来吧

    4. @kn007: 我加您QQ了,不知道可否通过下?

    5. MOD回复

      @BestChao: 没上Q

  3. 刚刚看过新浪微博开放平台的API,不知道是说的http://open.weibo.com/wiki/2/statuses/upload对应的thumbnail_pic字段说明吗?

    1. MOD回复

      @BestChao: 。。。。。。请重新仔细看,好吧。那是返回字段,代表是图片的缩略图。你是要请求,还没请求,看返回干嘛。发送的参数是pic。返回是其他用处的。 :o

    2. @kn007: 我不是很懂代码,kn007您可以贴出来参考下吗,请求的api说明是否可以给一个链接?

    3. MOD回复

      @BestChao: 你刚才的链接不是写的很清楚。
      你刚才的链接中的:请求参数、注意事项
      写的非常清楚了

    4. @kn007: 哦,看到了,那我如果测试,是否可以固定图片同步?如下
      $access_token = "2.00KOo64c92jdFyyD";
      $url = "https://api.weibo.com/2/statuses/update.json";
      $status = "我刚刚发布了新文章《".get_the_title($post_ID)."》,快来看看吧。详细内容请点击:".get_permalink($post_ID);
      $pic = "http://www.lienew.com/wp-content/themes/presscore-lite/img/t1.jpg";
      $data = "access_token=" . $access_token . "&status=" . urlencode ($status);
      $output = json_decode(post_by_curl($url,$data));

    5. @BestChao: 搞错了

    6. @kn007: 图片是以什么形式提交的呢,貌似不能直接是图片路径吧

    7. MOD回复

      @BestChao: 看注意事项,是二进制

    8. @kn007: 是否可以贴出代码参考下,对于非专业的我有些困难了。

    9. @BestChao: 还是可以固定声明提交方式?

  4. 目前$data为字符串,注意事项注明需要multipart/form-data编码方式提交,这样的话我是不是要写成数组Content-Type才是multipart/form-data编码形式提交?

    1. MOD回复

      @BestChao: 聪明 :lol:

    2. MOD回复

      @BestChao: https://kn007.net/topics/new-posts-wordpress-synchronous-weibo-with-articles-featured-image/

icon_wink.gificon_neutral.gificon_mad.gificon_twisted.gificon_smile.gificon_eek.gificon_sad.gificon_rolleyes.gificon_razz.gificon_redface.gificon_surprised.gificon_mrgreen.gificon_lol.gificon_idea.gificon_biggrin.gificon_evil.gificon_cry.gificon_cool.gificon_arrow.gificon_confused.gificon_question.gificon_exclaim.gif