新浪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); } ?>

 

 

posted @ 2013-05-12 22:56  不负韶华668  阅读(292)  评论(0编辑  收藏  举报