新浪微博开发平台之网站接入微博群发

什么是新浪微博开放平台
         新浪微博开放平台(Weibo Open Platform)是基于新浪微博海量用户和强大的传播能力,接入第三方合作伙伴服务,向用户提供丰富应用和完善服务的开放平台。将你的服务接入微博平台,有助于推广产品,增加网站/应用的流量、拓展新用户,获得收益。
让你的应用在新浪微博开放平台上运营,只需要通过简单的六个步骤:

成为开发者
1.创建微博帐号
在开发者页面点击“登录”或者“创建应用”,通过帐号登录成为一名开发者。一个新浪微博帐号可以管理10个不同的应用,建议开发人员使用官方微博的帐号,以便统一管理。
2.选择应用类型
点击“创建应用”,即进入目标应用的类型选择环节。请根据应用类型的提示,选择相应的应用创建流程。
3.开发者信息设置
请在开发者信息设置页填写真实资料。成为新浪微博认证的开发者,你需要通过邮箱验证和手机验证。我们会给你填写的邮箱和手机号发送验证信息,请根据提示验证你的身份。
请注意:开发者类型一经填写,不可修改。个人开发者不可接入微博支付业务,请谨慎选择。
创建应用
         在“管理中心”可查看应用信息。App Key是应用唯一的识别标志,新浪微博开放平台通过App Key鉴别应用的身份。App Secret是给应用分配的密钥,你需要妥善保存这个密钥,从而保证应用来源的的可靠性,防止被伪造。你可通过这两个数据进行相关的技术开发工作。
以上完成后就可以开发测试了

config文件是配置文件
<?php
header(“Content-Type: text/html; charset=UTF-8”);
define( “WB_AKEY” , XXXXXXXX);
define( “WB_SKEY” , XXXXXXXXXXXXXXXXXXXXXX);
define( “WB_CALLBACK_URL” , “http://www.XXXXX.com/callback.php” );
conn.php文件是链接数据库
<?php
$conn=mysql_connect(“localhost”,”root”,””)or die(“连接失败:”.mysql_error());//连接MYSQL
mysql_select_db(“send”,$conn) or die(“数据库不存在”.mysql_error());//选择库
mysql_query(“SET NAMES “Utf8″”,$conn);//设置字符集
date_default_timezone_set(“PRC”);//设置时区

index.php文件就是登录入口
callback.php文件是授权文件
saetv2.ex.class.php文件是封装好类文件
群发时代码改成这样
function __construct( $akey, $skey, $access_token, $refresh_token = NULL)
 {
  $conn=mysql_connect(“localhost”,”root”,””)or die(“连接失败:”.mysql_error());//连接MYSQL
  mysql_select_db(“send”,$conn) or die(“数据库不存在”.mysql_error());//选择库
  mysql_query(“SET NAMES “Utf8″”,$conn);//设置字符集
  date_default_timezone_set(“PRC”);//设置时区
  $sql=”select AccessToken from token order by ID desc”;
  $res=mysql_query($sql,$conn);
  $i=1;
  while($row=mysql_fetch_array($res))
  {
  $this->$i = new SaeTOAuthV2( $akey, $skey, $row[“AccessToken”], $refresh_token );
  $i ;
  }
  $this->oauth = new SaeTOAuthV2( $akey, $skey, $access_token, $refresh_token );
 }
哪里需要改哪里!

weibolist.php文件就是我们要编写的了.

<?php
session_start();
include_once( “config.php” );
include_once( “saetv2.ex.class.php” );
include_once( “conn.php” );
$c = new SaeTClientV2( WB_AKEY , WB_SKEY , $_SESSION[“token”][“access_token”] );
$ms  = $c->home_timeline(); // done
$uid_get = $c->get_uid();
$uid = $uid_get[“uid”];
$user_message = $c->show_user_by_id( $uid);//根据ID获取用户等基本信息
 $t = $_SESSION[“token”][“access_token”];    access_token
 $m = $_SESSION[“token”][“expires_in”];         access_token存在时间(单位/秒)
 $name = $user_message[“screen_name”];    微博的名字
 $timer = date(“Y-m-d H:i:s”);
 $sql=”select * from token where `Name` = “$name””;
 $res=mysql_query($sql,$conn);
 if(!$row=mysql_fetch_row($res))
 {
        $sql=”insert into token (Name,AccessToken,expires,timer) values (“$name”,”$t”,”$m”,”$timer”)”;
        mysql_query($sql,$conn);
 }
 else
 {
       $t1 = time(date(“Y-m-d H-i-s”));
       $st= strtotime($row[“4”]);
       if($st $row[“3”] <= $t1)
        {
        $sql=”update token set `AccessToken` =”$t”,`expires` = “$m”,`timer` = “$timer” where `ID` = “$row[0]””;
        mysql_query($sql,$conn);
         }
 }
?>

本次发微博与access_token到期的提示代码

<?php
echo “<h2>本次发微博人</h2>”;
$t = time(date(“Y-m-d H-i-s”));
 $sql=”select * from token”;
 $res=mysql_query($sql,$conn);
 $ii=1;
 while($row=mysql_fetch_array($res))
 {
 $st= strtotime($row[“timer”]);
 if($st $row[“expires”] > $t)
 {
 echo $ii.”、 ”.$row[“Name”].”</br>”;
 $ii ;
 }
 } 
 $sql=”select * from token”;
 $res=mysql_query($sql,$conn);
 $i1=1;
 while($row=mysql_fetch_array($res))
 {
 $st= strtotime($row[“timer”]);
 if($st $row[“expires”] <= $t)
 {
 if($i1==1){
 echo “<h2>授权过期</h2>”;
 }
 echo $i1.”、 ”.$row[“Name”].” 授权时间已到,请重新授权!</br></br>”;
 $i1 ;
 }
 } 
?>

发送新微博
<h2 align=”left”>发送新微博</h2>
 <form action=”weibolist.php” enctype=”multipart/form-data” method=”post”>
  <p>微博内容:
  <textarea name=”text” id=”text” cols=”45″ rows=”5″></textarea></p></br>
  <p>微博图片:
  <input name=”thumbnail” type=”file” id=”thumbnail” style=”width:200px” onMouseOut=”file()”/></p></br>
  <input name=”picpath” id=”picpath” type=”hidden” value=”” />
  <input name=”submit” type=”submit” value=”发送到微博” />
 </form>
<?php
  ini_set(“max_execution_time”, “100”);
         if(!empty($_REQUEST[“picpath”])){
   define(“ROOT_PATH”,$_SERVER[“DOCUMENT_ROOT”].”/”);
   define(“ROOT_UPLOAD”,ROOT_PATH.”upload/”);
   $filename=$_FILES[“thumbnail”][“name”];
   $filetype=$_FILES[“thumbnail”][“type”];
   $filesize=$_FILES[“thumbnail”][“size”];
   $filetmpname=$_FILES[“thumbnail”][“tmp_name”];
   if(($filetype==”image/pjpeg” || $filetype==”image/jpeg” || $filetype==”image/gif”) )
   {
    
    move_uploaded_file($filetmpname,ROOT_UPLOAD.$filename);
    $str=explode(“.”,$filename);  
    $num=count($str)-1;
    $round=rand();
    rename(ROOT_UPLOAD.$filename,ROOT_UPLOAD.time().$round.”.”.$str[$num]);
    $filepath=ROOT_PATH.”upload/”.time().$round.”.”.$str[$num];
    $ww = strtr($filepath,”/”,”\\”);
   }
 }

if( !empty($_REQUEST[“text”])) {
 if(!empty($_REQUEST[“picpath”])) {
 $ret = $c->upload( $_REQUEST[“text”], $ww); //发送微博图片
 }else{
 $ret = $c->update( $_REQUEST[“text”]); //发送微博
 }
 if ( isset($ret[“error_code”]) && $ret[“error_code”] > 0 ) {
 
  echo “<p>发送失败,错误:{$ret[“error_code”]}:{$ret[“error”]}</p>”;
 } else {
  echo “<p>发送成功</p>”;
 }
}
?>

function file(){
  var msg=document.getElementById(“thumbnail”).value;
  //alert(msg);
  document.getElementById(“picpath”).value=msg;
 }