关于新浪微博连接
简介:这是关于新浪微博连接的详细页面,介绍了和php,有关的知识、技巧、经验,和一些php源码等。
class=\'pingjiaF\' frameborder=\'0\' src=\'http://biancheng.dnbcw.info/pingjia.php?id=340855\' scrolling=\'no\'>最近要做新浪微博连接,搜出以前做的,也许有的人需要但不了解,现在来说说整个流程。懂得流程就很简单了。新浪跟qq的连接都类似。
首先要去新浪申请app key,下载sdk 里面还有demo ,可以先了解下。
第一步:生成新浪登录链接
require_once("includes/weibooauth.php");
//获取登陆url
$o=new WeiboOAuth(WB_AKEY,WB_SKEY);
$keys=$o->getRequestToken();
$aurl=$o->getAuthorizeURL($keys[\'oauth_token\'],false,"{$web[\'weburl\']}/sinalogin.php?act=apilogin");
$_SESSION[\'keys\'] = $keys;
$smarty->assign("sinaurl",$aurl);
$smarty->display("user_login.html");
第二步:在新浪登录后返回参数处理
判断是否存在本站 新浪账号,不存在则生成,存在则进入第三步
//处理用户数据 本站端
$c = new WeiboClient( WB_AKEY , WB_SKEY , $_SESSION[\'last_key\'][\'oauth_token\'] , $_SESSION[\'last_key\'][\'oauth_token_secret\'] );
$xuser=$c->show_user($_SESSION[\'last_key\'][\'user_id\']);
//转化字符串编码
$xuser=iconvstr("utf-8","gbk",$xuser);
$xs=$db->getRow("select * from ".table(\'userapi\')." where xuserid=".$xuser[\'id\']." and xfrom=\'sina\' ");
//存在记录 且已经绑定
if($xs[\'bind\']==1)
{
//如果已经绑定 则直接登陆
header("Location: sinalogin.php?act=done");
}else
{
if(!$xs)
{
//如果不存在则插入数据
$db->query("insert into ".table(\'userapi\')." set xuserid=".$xuser[\'id\'].",xusername=\'".$xuser[\'name\']."\',xfrom=\'sina\' ");
}
$smarty->assign("user",$xuser);
//处理登陆选项
$smarty->display("sina_login.html");
}
第三步:处理是否绑定本地账号,完成!
//登陆最后一步
header("Content-type:text/html;charset=gb2312");
$c = new WeiboClient( WB_AKEY , WB_SKEY , $_SESSION[\'last_key\'][\'oauth_token\'] , $_SESSION[\'last_key\'][\'oauth_token_secret\'] );
$xuser=$c->show_user($_SESSION[\'last_key\'][\'user_id\']);
//转化字符串编码
$xuser=iconvstr("utf-8","gbk",$xuser);
//如果有账号则绑定账号
if($_GET[\'a\']==\'bind\')
{
if(trim($_POST[\'yzm\'])!=$_SESSION[\'code\']) errback(\'验证码错误\');
$username=trim(strip_tags($_POST[\'username\']));
empty($username) && errback(\'用户名不能为空\');
$password=md5(trim($_POST[\'password\']));
$userid=$db->getOne("select userid from ".table(\'user\')." where username=\'$username\' and password=\'$password\' ");
if(!$userid) errback(\'用户名或者密码出错,绑定不成功\');
$db->query("update ".table(\'userapi\')." set uid=\'$userid\',bind=1 where xuserid=".$xuser[\'id\']." and xfrom=\'sina\' ");
}elseif($_GET[\'a\']==\'newbind\')
{
$xu=$db->getOne("select uid from ".table(\'userapi\')." where xuserid=".$xuser[\'id\']." and xfrom=\'sina\' ");
//如果没有关联uid,则生成
if(!$xu)
{
//如果没有则 生成一个账号 绑定
$tempname=$username=$xuser[\'name\'];
$i=1;
$j=0;
while($i)
{
$i=$db->getOne("select count(*) from ".table(\'user\')." where username=\'$tempname\' ");
if($i>0)
{
$tempname=$username.$j;
$j++;
}
}
$username.=$j?$j:"";
$db->query("insert into ".table(\'user\')." set username=\'$username\',nickname=\'".$xuser[\'name\']."\' ");
$userid=$db->insert_id();
$db->query("update ".table(\'userapi\')." set uid=\'$userid\' where xuserid=".$xuser[\'id\']." and xfrom=\'sina\' ");
}
}
//最后选出用户
$uid=$db->getOne("select uid from ".table(\'userapi\')." where xuserid=".$xuser[\'id\']." and xfrom=\'sina\' ");
$_SESSION[\'ss_userid\']=$uid;
$_SESSION[\'ss_username\']=$xuser[\'name\'];
header("Location: index.php");
<?php
session_start();
define("CT",1);
require_once("includes/init.php");
require_once("includes/weibooauth.php");
$act=trim($_REQUEST[\'act\']);
if(empty($act))
{
$act="index";
}
if($act==\'index\'){
require_once("includes/weibooauth.php");
//获取登陆url
$o=new WeiboOAuth(WB_AKEY,WB_SKEY);
$keys=$o->getRequestToken();
$aurl=$o->getAuthorizeURL($keys[\'oauth_token\'],false,"{$web[\'weburl\']}/sinalogin.php?act=apilogin");
$_SESSION[\'keys\'] = $keys;
$smarty->assign("sinaurl",$aurl);
$smarty->display("user_login.html");
}else($act==\'apilogin\')
{
//处理登陆数据 新浪端
//获取加密数据
$o = new WeiboOAuth( WB_AKEY , WB_SKEY , $_SESSION[\'keys\'][\'oauth_token\'] , $_SESSION[\'keys\'][\'oauth_token_secret\'] );
$last_key = $o->getAccessToken( $_REQUEST[\'oauth_verifier\'] ) ;
$_SESSION[\'last_key\'] = $last_key;
header("Location: sinalogin.php?act=show");
}elseif($act=="show")
{
//处理用户数据 本站端
$c = new WeiboClient( WB_AKEY , WB_SKEY , $_SESSION[\'last_key\'][\'oauth_token\'] , $_SESSION[\'last_key\'][\'oauth_token_secret\'] );
$xuser=$c->show_user($_SESSION[\'last_key\'][\'user_id\']);
//转化字符串编码
$xuser=iconvstr("utf-8","gbk",$xuser);
$xs=$db->getRow("select * from ".table(\'userapi\')." where xuserid=".$xuser[\'id\']." and xfrom=\'sina\' ");
//存在记录 且已经绑定
if($xs[\'bind\']==1)
{
//如果已经绑定 则直接登陆
header("Location: sinalogin.php?act=done");
}else
{
if(!$xs)
{
//如果不存在则插入数据
$db->query("insert into ".table(\'userapi\')." set xuserid=".$xuser[\'id\'].",xusername=\'".$xuser[\'name\']."\',xfrom=\'sina\' ");
}
$smarty->assign("user",$xuser);
//处理登陆选项
$smarty->display("sina_login.html");
}
}elseif($act=="done")
{//登陆最后一步
header("Content-type:text/html;charset=gb2312");
$c = new WeiboClient( WB_AKEY , WB_SKEY , $_SESSION[\'last_key\'][\'oauth_token\'] , $_SESSION[\'last_key\'][\'oauth_token_secret\'] );
$xuser=$c->show_user($_SESSION[\'last_key\'][\'user_id\']);
//转化字符串编码
$xuser=iconvstr("utf-8","gbk",$xuser);
//如果有账号则绑定账号
if($_GET[\'a\']==\'bind\')
{
if(trim($_POST[\'yzm\'])!=$_SESSION[\'code\']) errback(\'验证码错误\');
$username=trim(strip_tags($_POST[\'username\']));
empty($username) && errback(\'用户名不能为空\');
$password=md5(trim($_POST[\'password\']));
$userid=$db->getOne("select userid from ".table(\'user\')." where username=\'$username\' and password=\'$password\' ");
if(!$userid) errback(\'用户名或者密码出错,绑定不成功\');
$db->query("update ".table(\'userapi\')." set uid=\'$userid\',bind=1 where xuserid=".$xuser[\'id\']." and xfrom=\'sina\' ");
}elseif($_GET[\'a\']==\'newbind\')
{
$xu=$db->getOne("select uid from ".table(\'userapi\')." where xuserid=".$xuser[\'id\']." and xfrom=\'sina\' ");
//如果没有关联uid,则生成
if(!$xu)
{
//如果没有则 生成一个账号 绑定
$tempname=$username=$xuser[\'name\'];
$i=1;
$j=0;
while($i)
{
$i=$db->getOne("select count(*) from ".table(\'user\')." where username=\'$tempname\' ");
if($i>0)
{
$tempname=$username.$j;
$j++;
}
}
$username.=$j?$j:"";
$db->query("insert into ".table(\'user\')." set username=\'$username\',nickname=\'".$xuser[\'name\']."\' ");
$userid=$db->insert_id();
$db->query("update ".table(\'userapi\')." set uid=\'$userid\' where xuserid=".$xuser[\'id\']." and xfrom=\'sina\' ");
}
}
//最后选出用户
$uid=$db->getOne("select uid from ".table(\'userapi\')." where xuserid=".$xuser[\'id\']." and xfrom=\'sina\' ");
$_SESSION[\'ss_userid\']=$uid;
$_SESSION[\'ss_username\']=$xuser[\'name\'];
header("Location: index.php");
}
?>