接过一个简单的实现oauth登录的小单子,使用2345帐号登录最土的团购程序,凭着自己半天的开发新浪微博应用的经验开始了这个oauth的实现,下面是实现的源码,这是2345给的api下的callback.php文件

<?php
/*
* 用户认证后,获得的access_token以及用户信息
*/
header("Content-Type: text/html;charset=utf-8");
session_start();
include_once('lib/Tuan2345Auth.php');
//0331修改
require_once("./lib/config.php");
$h = new Tuan2345Auth($_SESSION['request_token']['oauth_token'],$_SESSION['request_token']['oauth_token_secret']);
$accessToken = $h->getAccessToken($_REQUEST['oauth_verifier']);
$oauth_token = $accessToken["oauth_token"];
$oauth_secret = $accessToken["oauth_token_secret"];
$uid = $accessToken["user_id"];
include_once("lib/Tuan2345Client.php");
$client = new Tuan2345Client();
$userinfo = $client->get_userinfo($uid);
if($userinfo){
$userinfo_arr = explode("|",$userinfo);
}
$_SESSION["access_token"] =array('oauth_token'=>$oauth_token,'oauth_token_secret'=>$oauth_secret);
$errorno = $accessToken["error_no"];
if(!empty($errorno))
{
//可以对应跳转到错误页面
echo " AUTH FAIL !";
echo $accessToken["msg"];
}
if(!empty($oauth_token) && !empty($oauth_secret))
{
header('Location: ./thirdpart/2345/deal_2345login.php');
/*
echo "access_token=".$accessToken["oauth_token"]."<br>";
echo "access_token_secret=".$accessToken["oauth_token_secret"]."<br>";
echo "qid=".$userinfo_arr[0]."<br>";
echo "qname=".$userinfo_arr[1]."<br>";
echo "qmail=".$userinfo_arr[2]."<br>";*/
$sns = "2345:".$userinfo_arr[0];
$exist_user = Table::Fetch('user', $sns, 'sns'); // user是数据表 $sns 是值 'sns'是字段 返回的结果应该是全部的数据
//如果用户存在则设置session的值并且跳转到index.php主页
if ( $exist_user ) {
Session::Set('user_id', $exist_user['id']);
//exit();
Utility::Redirect(get_loginpage(WEB_ROOT . '/index.php'));//重定向到主页
}

$prompt_name = $userinfo_arr[1];
$exist_user = Table::Fetch('user', $prompt_name, 'username');//取出username为$promopt_name 对应的值的数据记录
while(!empty($exist_user)) {
$prompt_name = $ms['screen_name'] .'_' . rand(10000,99999);
$exist_user = Table::Fetch('user', $prompt_name, 'username');
}

$new_user = array(
'username' => $userinfo_arr[1],
'realname' => $userinfo_arr[1],
'email' => $userinfo_arr[2],
'password' => rand(10000000,99999999),
'gender' => 'M',
'sns' => $sns,
);
//将用户数据写入数据库中
if ( $user_id = ZUser::Create($new_user, true) ) {
Session::Set('user_id', $user_id);
Utility::Redirect(get_loginpage(WEB_ROOT . '/index.php'));
}

Utility::Redirect(WEB_ROOT . '/thirdpart/sina/login.php' );
}
echo '<br><a href="index.html" mce_href="index.html" >再来一次</a>';
?>