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

2017年6月底7月,微博开放平台正式变更接口。通过微博API介绍页面可以看到变更后结果,可笑的是微博API更新日志只字未提。
原来的普通写入(statuses/update)及高级写入(statuses/upload)等写入接口全部废弃,取而代之的是分享接口(statuses/share)。
分享接口(statuses/share)全面代替之前的写入接口,调用方法基本与之前的高级写入接口一致,但是它有一个变态之处,就是status参数必须包含至少一个第三方分享到微博的网页URL,且该URL只能是该第三方(调用方)绑定域下的URL链接。
也就是你发送的微博,必须至少含一个你的应用链接。不过还好对我没什么大碍,我本来就含了链接。但对那些,拿来纯发微博状态,就有点无语了。
或者那些用根域名绑定的微博应用,却用子域名作为博客的用户,也会非常无奈,只能去微博开放平台修改来源域名,不然就甩出:
![]()
为了方便大家,我截了个图,给你们看看。

至于里面所说的“绑定域在我的应用 - 应用信息 - 基本应用信息编辑 - 安全域名里设置。”,我是没看到这个所谓安全域名,反正我简单理解成对应应用的域名链接,希望没错。
好,那么新版,在Wordpress如何方便的使用呢?
很简单,我把代码发出来,自己改下代码里的“应用密匙”即可。
add_action('publish_post', 'new_post_weibo', 1);
function new_post_weibo($post_ID, $debug = false) {
global $post;
if (!wp_is_post_revision($post_ID) && $post->post_status != "publish" || $debug == true){
if (isset($post) && $post->post_type != "post") return;
$access_token = "应用密匙";
$headers = array();
$headers[] = "Authorization: OAuth2 ".$access_token;
$url = 'https://api.weibo.com/2/statuses/share.json';
$status = "我刚刚发布了新文章《".get_the_title($post_ID)."》,快来看看吧。详细内容请点击:".get_permalink($post_ID);
if (has_post_thumbnail()) {
$post_thumbnail_id = get_post_thumbnail_id($post_ID);
$img_src = wp_get_attachment_url( $post_thumbnail_id );
}else{
$content = get_post( $post_ID )->post_content;
preg_match_all('/<img.*?(?: |\\t|\\r|\\n)?src=[\'"]?(.+?)[\'"]?(?:(?: |\\t|\\r|\\n)+.*?)?>/sim', $content, $strResult, PREG_PATTERN_ORDER);
$img_src = $strResult[1][0];
}
if(!empty($img_src)) {
$picfile = str_replace(home_url(),$_SERVER["DOCUMENT_ROOT"],$img_src);
if(!empty($picfile)){
$filecontent = file_get_contents($picfile);
}else{
$filecontent = file_get_contents($img_src);
}
$array = explode('?', basename($img_src));
$filename = $array[0];
$boundary = uniqid('------------------');
$MPboundary = '--'.$boundary;
$endMPboundary = $MPboundary. '--';
$multipartbody = '';
$multipartbody .= $MPboundary . "\r\n";
$multipartbody .= 'Content-Disposition: form-data; name="pic"; filename="' . $filename . '"' . "\r\n";
$multipartbody .= "Content-Type: image/unknown\r\n\r\n";
$multipartbody .= $filecontent. "\r\n";
$multipartbody .= $MPboundary . "\r\n";
$multipartbody .= 'content-disposition: form-data; name="status' . "\"\r\n\r\n";
$multipartbody .= urlencode($status)."\r\n";
$multipartbody .= $endMPboundary;
$headers[] = "Content-Type: multipart/form-data; boundary=" . $boundary;
$data = $multipartbody;
}else{
$data = "status=" . urlencode($status);
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$curlResponse = curl_exec($ch);
curl_close($ch);
$output = json_decode($curlResponse);
if($debug){
var_dump($output);
echo '<hr />';
var_dump($data);
}
}
}
以上,便解决前几天说道的“Insufficient app permissions”问题(错误代码:10014)。
不加话题的原因是,微博会忽略话题标签,那就没什么必要了。。
知道问题,还是不难解决的。至于其他我就不多说什么了。
上面代码简单可靠,不用用什么所谓SDK,满足功能就行了。
旧版新文章同步微博介绍见:《WordPress 新文章同步微博(带文章特色图片)》。
PS: Unix时间截在今天10:40:00已经以1500000000开始了。
PS2: 后续在平台公告中看到《平台分享到微博接口升级公告》,里面提到此事。
官方博客的链接有点意思,中文就算了,还缺字。。。
既然写了,就再多写几句,难得有时间在博客上写点东西。
最近因为知乎专栏的一篇文章,使得博客访问量比较大,我很开心,虽然只持续一天多。
最多一天显示来自知乎有2W2+的唯一IP来访问,大多来自中国,也有少许日本、台湾及美国英国(来自Google Analytics的数据)。
这几天,这篇文章一共受到近4W次访问,如果你有关注我的最近动态应该会发现到,确实很热门,也有很多交流。这篇文章就是:《免费申请Google Voice美国电话号码》。
可能一些原因使得大家对这种带有一点隐私性,类似小号的电话号码有所青睐,加上这篇文章当时写的也比较详细(感觉我一般都写得蛮详细的),所以被推荐了一波。
这年头,无广告,不瞎BB的技术博客应该少了不少,希望我还能给你们带来一点资讯和一些便捷。
最后,谢谢各位朋友的支持,如果你觉得文章不错的话,帮我多宣传一下。
各位有心的看官,也欢迎赞助下我,非常感谢。
转载请注明转自: kn007的个人博客 的《[全新接口]WordPress 新文章带图片同步微博》

像我这种回调地址在 api.lwl12.com 的瞬间就傻逼了……
@liwanglin12: 不用回调啊。
我回调地址是localhost。。。
@liwanglin12: 来源地址符合就行了~
weibo api 上线要备案的吧?
@大喇叭: 是要备案。
@kn007: 天朝备案就省的玩了。。

@大喇叭: 有张良民证,好认真干活啊~
@大喇叭: 如果把备案想成是资质或者是证书,估计就没那么难受了。。
@kn007:

整这么麻烦……IFTTT一键搞定……
@老虎: IFTTT能带微博小尾巴?!

@kn007: 好吧,胜在简单,哈哈
@老虎: 微软系邮箱会进Junk,麻烦加下白名单。。谢谢
这一说法可以谷歌验证:hotmail emails marked as spam。
谢谢老虎兄了。基本上发邮件给微软,答复都是应该没问题,但是他们程序有个考察期,所以可能还是会进Junk,考察期多久,看以前这个ip行为决定
然后是多久并没有说。
一般来说,第一条搜索结果是:Make Sure Windows Hotmail Doesn't Spam Important Mail
随便的,其他链接的文章也提到:I would like to point out that, yes, hotmail (as well as live and msn and outlook webmail) are very strict, and tend to classify a lot of mass-mailings as spam, even when they shouldn't be.
所以只能麻烦你们自己加下白名单。
如果觉得邮件烦的,可以退订博客邮件。邮件里有退订链接。
@kn007: 没事,我经常检查junk
@老虎: 主要是忙,马上要出差。
本来准备写封《致微软邮箱用户的一封信》推送,并且退订所有微软邮箱用户的,不过还没时间把功能写好。。。
微软每次都说我发的信,不可能会被标记为Spam,进Junk,但还是照样进。而且SNDS还显示无数据,状态正常。我受够了。
不用微博好多年了…
@老杨:
好习惯!
沒有中國身份證LOL
@Kreen:
只能说太不人性,居然不允许非大陆居民申请。。
早上8点多看到你的动态,没想到这篇文章昨天你就发了
微博我觉得差不多可以放弃了 一大堆广告和推广
@World: 很久没上QQ空间了,发了一条。
好巧啊,前两天,看了你申请GV的文章。

昨天搞微博API的时候,在github php sdk遇上了,点你资料进博客,发现原来GV文章原来是你写的~~
@Cp0204: 真是巧了,握手

感谢你的提醒啊,要不然都没发现
看见那么多代码,也没心情弄了。
@亡命徒:
好吧
好腻害啊
@路易大叔:
点个赞,我在知乎也看到这篇文章了,看到你网站地址,哈哈哈
@sunnywolf:
知乎看到我这篇文章
哪里哪里,发个链接来看看 