新浪sae授权流程的理解
1.去新浪开放平台下载一个授权demo
2.index.php
<?php session_start(); include_once( \'config.php\' ); include_once( \'saetv2.ex.class.php\' ); $o = new SaeTOAuthV2( WB_AKEY , WB_SKEY ); //跳转到授权的弹出框 $code_url = $o->getAuthorizeURL( WB_CALLBACK_URL ); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>新浪微博PHP SDK V2版 Demo - Powered by Sina App Engine</title> </head> <body> <!-- 授权按钮 --> <p><a href="<?php echo $code_url;?>"><img src="weibo_login.png" title="点击进入授权页面" alt="点击进入授权页面" border="0" /></a></p> </body> </html>
3.config.php
<?php header(\'Content-Type: text/html; charset=UTF-8\'); define( "WB_AKEY" , \'2145580683\' ); define( "WB_SKEY" , \'5a21c49f0e05a772c6df66f1d34dbed9\' );
//回调地址:这个必须调用线上的才行 define( "WB_CALLBACK_URL" , \'http://zrpzy.sinaapp.com/callback\' ); ?>
4.callback.php
<?php /** * Created by JetBrains PhpStorm. * User: zhangys * Date: 12-3-22 * Time: 上午7:43 * To change this template use File | Settings | File Templates. */ //if ($this->user->is_logged) { // $this->user->logout(); // // $this->redirect(\'login/sina\'); //} $o = new SaeTOAuthV2($C->sina_appkey, $C->sina_appsecrect); if (isset($_REQUEST[\'code\'])) { $keys = array(); $keys[\'code\'] = $_REQUEST[\'code\']; $keys[\'redirect_uri\'] = $C->SITE_URL . \'login/sina\'; $token = $o->getAccessToken(\'code\', $keys);
//如果用户授权了就会得到一个token值 if ($token) { //echo \'1\';die; //$this->redirect(\'home\');die; //保存token $exptime = $token[\'remind_in\'] + time(); $dbm->query(\'replace into token_sina set sina_uid= \' . $token[\'uid\'] . \',access_token="\' . $token[\'access_token\'] . \'",exptime=\' . $exptime); //保存用户信息 $c = new SaeTClientV2($C->sina_appkey, $C->sina_appsecrect, $token[\'access_token\']); $me = $c->show_user_by_id($token[\'uid\']); //根据ID获取用户等基本信息 //print_r($me); $dbm->query(\'SELECT uid FROM users_sina WHERE sina_uid="\'.$token[\'uid\'].\'" LIMIT 1\'); if( 0 == $dbm->num_rows() ) { //写入用户信息 $dbm->query(\'INSERT INTO users SET email="\' .$me[\'id\'] . \'@weibo.com", username="\' . $dbm->e($me[\'name\']) . \'", password="no",reg_date="\' . time() . \'", reg_ip="\' . ip2long($_SERVER[\'REMOTE_ADDR\']) . \'", active=1\'); $user_id = intval($dbm->insert_id()); $dbm->query(\'replace into users_sina set uid= \'.$user_id .\' ,sina_uid=\'.$me[\'id\'].\' ,name="\'.$me[\'name\'].\'" ,province=\'.$me[\'province\'].\' ,city=\'.$me[\'city\'].\' ,domain="\'.$me[\'domain\'].\'",gender="\'.$me[\'gender\'].\'",followers_count=\'.$me[\'followers_count\'].\',friends_count=\'.$me[\'friends_count\'].\' ,statuses_count=\'.$me[\'statuses_count\'].\' ,created_at=\'.strtotime($me[\'created_at\']).\' ,verified=\'.intval($me[\'verified\']).\',verified_type=\'.$me[\'verified_type\'].\' ,description="\'.$dbm->e($me[\'description\']).\'"\'); //登录 $this->user->login($me[\'id\'] . "@weibo.com", "no"); $this->network->get_user_by_id($this->user->info->id,true); $this->redirect(\'home\'); }else{ //登录 $this->user->login($me[\'id\'] . "@weibo.com", "no"); $this->network->get_user_by_id($this->user->info->id,true); $this->redirect(\'home\'); } }else { $code_url = $o->getAuthorizeURL($C->SITE_URL . \'login/sina\'); $this->network->get_user_by_id($this->user->info->id,true); $this->redirect($code_url); } } else { //未授权时跳转 // echo \'4\';die; $code_url = $o->getAuthorizeURL($C->SITE_URL . \'login/sina\'); $this->redirect($code_url); } ?>
版权声明:本文为zrp2013原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。