从零开始同步自定义来源到新浪微博
零、准备工作
一个微博开放平台账号
一个带备案号的网站
一个Wordpress博客
一、开放平台部分
跟装大象一样总共有三步w主要是认证网站有效性以及确认你在用微博组件
申请好微博开放平台,在首页添加网站应用,在“微连接”选择“网站接入”
在第一步会生成一个meta标签,复制下来,粘到自己网站首页的head标签里,确认你能控制这个网站。
你得到了APP key!
接下来就可以开始写详细的应用信息了,微博来源的命名就在这里,叫“网站名称”,随便起吧w
二、网站审核部分
再回到首页添加微博控件代码,以分享按钮为例,直接引用官网的说明书
- 1.在HTML标签中增加XML命名空间
- <html xmlns:wb="http://open.weibo.com/wb">
- 2.在HEAD头中引入WB.JS
- <script src="http://tjs.sjs.sinajs.cn/open/api/js/wb.js" type="text/javascript" charset="utf-8"></script>
- 3.在需要部署微博发布器的位置粘贴WBML代码
<wb:share-button appkey="你的key" addition="number" type="button"></wb:share-button>
审核很快的,一个工作日内就好了,审核通过后,从这个key发出的微博来源就不是“未通过审核应用”了w
三、博客部分
主要是同步Wordpress的文章,找到了新版的同步代码,可以发图了,这是个高级功能,要申请微博高级写入接口,在应用的“接口管理-申请权限”申请,一个工作日内审核。稍微改动了下代码,在主题的functions.php里面加上下面这段:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | /** * WordPress发布文章同步到新浪微博(带图片&自定义栏目版) * 文章地址:http://zhangge.net/4947.html */ function post_to_sina_weibo($post_ID) { if (wp_is_post_revision($post_ID)) return;//修订版本(更新)不发微博 $get_post_info = get_post($post_ID); $get_post_content = 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=你key'; $username='你账号'; $userpassword='你密码'; $request = new WP_Http; $keywords = ""; /* 获取文章标签关键词 */ $tags = wp_get_post_tags($post_ID); foreach ($tags as $tag ) { $keywords = $keywords.'#'.$tag->name."#"; } /* 修改了下风格,并添加文章关键词作为微博话题,提高与其他相关微博的关联率 */ $string1 = '【'.strip_tags( $get_post_title ).'】'; $string2 = $keywords.' 查看全文:'.get_permalink($post_ID); /* 微博字数控制,避免超标同步失败 */ $status = $string1.mb_strimwidth(strip_tags( apply_filters('the_content', $get_post_content)),0, 90,'...').$string2; /* 获取特色图片,如果没设置就抓取文章第一张图片 */ $url = get_mypost_thumbnail($post_ID); /* 判断是否存在图片,定义不同的接口 */ if(!empty($url)){ $api_url = 'https://api.weibo.com/2/statuses/upload_url_text.json'; /* 新的API接口地址 */ $body = array('status' => $status,'source' => $appkey,'url' => $url); } else { $api_url = 'https://api.weibo.com/2/statuses/update.json'; $body = array('status' => $status,'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', 0); /** * WordPress 获取文章图片加强版 By 张戈博客 */ if(!function_exists('get_mypost_thumbnail')){ function get_mypost_thumbnail($post_ID){ if (has_post_thumbnail()) { $timthumb_src = wp_get_attachment_image_src( get_post_thumbnail_id($post_ID), 'full' ); $url = $timthumb_src[0]; } else { if(!$post_content){ $post = get_post($post_ID); $post_content = $post->post_content; } preg_match_all('|<img.*?src=[\'"](.*?)[\'"].*?>|i', do_shortcode($post_content), $matches); if( $matches && isset($matches[1]) && isset($matches[1][0]) ){ $url = $matches[1][0]; }else{ $url = ''; } } return $url; } } |
参考文献:
WordPress发布文章同步到新浪微博失败的问题解决与分享
码字很辛苦,转载请注明来自空间中的空间的《从零开始同步自定义来源到新浪微博》
2016-11-17
和谐小本子·专
评论