导读:在设计博客类站点时,有时会需要在发布文章时同步发布在微博上。本文阐述了实现该功能的基本方式。
准备工作
作为新浪微博的开发者,需要有身份验证;
个人身份认证的审核,一般一个工作日;
接着是提交网站的审核,境内的就是提交备案号。境外的提交所在网站的境外证明即可;也是一个工作日左右;
通过个人身份审核之后,就可以创建应用、调用接口了,这时得到的权限相对低点;
网站不提交审核或未通过审核,对发微博没有影响;只是在发的微博下面会显示"未审核应用";
审核之后显示的为网站应用名称:image

调用接口

微博开放平台提供了测试工具;
在开发接入之前,首先得保证通过这个测试工具能将测试微博发出去;
http://open.weibo.com/tools/console?uri=statuses/update&httpmethod=POST&key1=status&value1=%E5%BE%AE%E5%8D%9A%E6%9D%A5%E8%87%AAAPI%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7
发微博的api参考文档为:
http://open.weibo.com/wiki/2/statuses/update
所有发微博的接口都需要权限认证;认证通过之后会得到一个access_token(访问密钥);密钥的有效期根据用户等级的不同而有所区别;
未通过web审核的为1天;审核通过的普通用户为7天;
在有效期内,不用再与新浪服务器交互来进行权限认证,只要本地保存有这个token,就可以用来调用各种微博api(读、写、获取听众信息等)

权限认证

权限认证有三种方式:
通过用户名和密码;
这个最易懂,在程序中写好微博帐号的用户名和密码,通过api调用来认证;但需要注意的是这个接口是提供给开发app来使用的,web应用无法使用;
通过web回调方式;
需要与sina server交互,并提供回调地址;在回调地址中得到access_token;
第三种为code方式,未细看,略过;
web应用只支持第二种授权方式;以下详细说明第二种方式的使用:
下载新浪提供的SDK,里面有demo和api封装类;
http://open.weibo.com/wiki/SDK

接入页面

==call.php========================
 
include_once(  'sina_config.php' );
include_once( 'saetv2.ex.class.php' );
//获取到授权的url
$o = new SaeTOAuthV2( WB_AKEY , WB_SKEY  );
$code_url = $o->getAuthorizeURL( WB_CALLBACK_URL );
//post或get方式调用该url,取得授权;授权完成后,新浪会调用我们这边传过去的回调地址:WB_CALLBACK_URL 
request()->redirect($code_url);

回调地址页面(WB_CALLBACK_URL):


===callback.php====================
$o = new SaeTOAuthV2( WB_AKEY , WB_SKEY );
if (isset($_REQUEST['code'])) {
$keys = array();
$keys['code'] = $_REQUEST['code'];
$keys['redirect_uri'] = WB_CALLBACK_URL;
try {
$token = $o->getAccessToken( 'code', $keys ) ;
} catch (OAuthException $e) {
echo "weibo.com get access token err.";
LOG_ERR("weibo.com get access token err.");
return ;
}
}
if ($token) {
//取到授权后的api调用密钥,可用存起来,在有效期内多次调用api接口就不用再授权了
$_SESSION['token'] = $token;
$c = new SaeTClientV2( WB_AKEY , WB_SKEY , $_SESSION['token']['access_token'] );
$ret = $c->update( $weiboStr );    //发送微博
if ( isset($ret['error_code']) && $ret['error_code'] > 0 ) {
$str = "Weibo.com Send failed. err info:" . $ret['error_code'] . '/' . $ret['error'];
LOG_ERR($str);
} else {
LOG_INFO("Weibo.com Send Success.");
}
}

 
博客的摘要提取
微博的字数为140字;其中汉字为1个字;我们使用计数函数得有所选择;对一个汉字,strlen()算为3个字符,而多字节统计函数mb_strlen()算1个字,符合我们的使用要求;
最后在发的微博中需要清除html标记和& nbsp;等
//获取当前微博内容(140字)
public function getWeibo()
{
$titleLen = mb_strlen($this->title, 'UTF-8');
//140字除去链接的20个字和省略符;剩115字左右,需要说明的是链接:无论文章的链接多长,在微博里都会被替换成短链接,按短链接的长度来计算字数;
$summaryLen = 115 - $titleLen ; 
$pubPaper = cutstr_html($this->summary);
if(mb_strlen($pubPaper, 'UTF-8')  >= $summaryLen)
$pubPaper = mb_substr($pubPaper,0,$summaryLen,'UTF-8');
$pubPaper = sprintf('【%s】%s...%s', $this->title , $pubPaper , aurl('post/show', array('id' => $this->id)));
return $pubPaper;
}
//完全的去除html标记
function cutstr_html($string)
{
$string = strip_tags($string);
$string = preg_replace ('/n/is', '', $string);
$string = preg_replace ('/ | /is', '', $string);
$string = preg_replace ('/ /is', '', $string);
return $string;
}

转载于:https://www.cnblogs.com/xingmeng/p/3540473.html

PHP实现微博的同步发送(转)相关推荐

  1. php微博互粉源码,PHP实现微博的同步发送

    准备工作 作为新浪微博的开发者,需要有身份验证: 个人身份认证的审核,一般一个工作日: 接着是提交网站的审核,境内的就是提交备案号.境外的提交所在网站的境外证明即可:也是一个工作日左右: 通过个人身份 ...

  2. 将 WordPress 文章同步发送到 Twitter,新浪微博,搜狐微博,QQ微博,嘀咕,开心,人人

    这两天没事,Forece 又开始折腾了,想把自己用 WordPress 搭建的博客同步到所有社区网站和微博上边.网上搜索了很多文章,其中大部分都是通过嘀咕来实现的.不过也有用其他方法的.在这里我总结一 ...

  3. 消息的同步发送,异步发送以及消息发送的可靠性

    最近写的一个通信框架中有两种最基本的消息发送方式:同步发送和异步发送. 同步方式: 消息的发送方发A送一条消息到接收端B,B收到消息之后需要对消息进行处理,然后发送ACK确认消息回A,A收到B的ACK ...

  4. 异步消息服务器,Spring-Kafka中如何通过KafkaTemplate 对象异步和同步发送消息

    Kafka Producer默认是异步发送. 在初始化producer实例时,会创建一个sender线程负责批量发送消息: producer将消息暂存在缓冲区,消息根据topic-partition分 ...

  5. 【Kafka】消息的同步发送和异步发送

    文章目录 概述 1. sync vs async 1.1 java代码同步和异步 2. 可靠性机制(ack属性配置) 2.1 oneway 3. 一般配置 4. 同步异步和ack的联系和区别 参考 概 ...

  6. Netty:实现同步发送并接收消息的一种方式

    Netty创建通信服务时使用Nio异步通信, 配置代码(bootstrap.channel(NioSocketChannel.class);),要怎样实现这样一个同步发送消息并接收消息功能,虽然这样做 ...

  7. 微博自动同步发表到微头条工具使用说明

    简要描述: 由于微博没有像csdn这样的支持跨平台内容导出的功能,于是开发了基于模拟人操作.chrome浏览器的工具,主要功能是将微博内容自动同步到今日头条微头条,实现内容自动迁移,省下不少人工. 使 ...

  8. rocketmq同步发送超时时间_RocketMQ系列(一)基本概念

    RocketMQ系列(一)基本概念 RocketMQ是阿里出品的一款开源的消息中间件,让其声名大噪的就是它的事务消息的功能.在企业中,消息中间件选择使用RocketMQ的还是挺多的,这一系列的文章都是 ...

  9. RocketMQ消息支持的模式-消息同步发送

    普通消息的发送和接收在前面已经演示过了,在上面的案例中是基于同步消息发送模式.也就是说消息发送出去后,producer会等到broker回应后才能继续发送下一个消息

  10. python同时同步发送多个请求_python如何实现“发送一个请求,等待多个响应”的同步?...

    我正在写一些代码通过串行口与单片机通信. MCU端基本上是一个请求/响应服务器. 一个或多个MCU发送我的请求. 然而,响应可以异步到达并且具有随机延迟,但是响应的顺序将保持不变. 另外,我的应用程序 ...

最新文章

  1. 深蓝学院的深度学习理论与实践课程:第二章
  2. 贺州学院计算机协会,2019年广西高等教育学会数学教学专业委员会年会暨学术交流会在贺州学院召开...
  3. 8月下旬国内域名注册商净增量Top10
  4. AliOS Things 硬件抽象层(HAL)对接系列2 — SPI driver porting
  5. 在${}中为甚么采用@Param及多参数查询@Param
  6. 一致性协议raft详解(一):raft整体介绍
  7. 3分钟搞懂LSI原理
  8. 2014河北廊坊计算机一级,2018年上半年河北省廊坊市计算机等级考试简章
  9. 自考那些事儿(八):计算机网络原理(原理篇)之网络各层
  10. K8S使用dashboard管理集群
  11. POJ3251 Big Square【水题】
  12. 51单片机——定时器
  13. python金融衍生品有哪些_什么是金融衍生品,金融衍生品有哪些?
  14. 斯蒂文斯理工学院计算机科学硕士,2020年斯蒂文斯理工学院排名TFE Times美国最佳计算机科学硕士专业排名第80...
  15. c语言 srand,函数srand在C中
  16. 【抓包】【Mac Charles】局域网无法抓包 手机热点来解决
  17. 二手闲鱼源码 php 如何搭建
  18. Python暗通道图像去雾
  19. J2EE疑难解决实例--转自JSP中文网
  20. week1-Python学习总结

热门文章

  1. 转]分享一个可以下载全球影像的网站(包括历史影像)
  2. android 数据存储之 读写文件
  3. 博客园园龄,还有比我老的吗?
  4. HDU1760 A New Tetris Game NP态
  5. 今天起改用mac的marsedit写博
  6. JavaWEB开发国际化
  7. 如何在页面中获取到ModelAndView绑定的值
  8. vlan理论03-vlan映射
  9. Hexo Next底部powered by的logo栏更改以及注意事项(附官方文档,文末有福利链)
  10. 2017黑客大预言:病毒传播无需文件,无人机可能成为炸弹