<?php
/**
* PHP SDK for weibo.com (using OAuth2)
*
* @author Elmer Zhang <freeboy6716@gmail.com>
*/
/**
* @ignore
*/
class OAuthException extends Exception {
// pass
}
/**
* 新浪微博 OAuth 认证类(OAuth2)
*
* 授权机制说明请大家参考微博开放平台文档:{@link http://open.weibo.com/wiki/Oauth2}
*
* @package sae
* @author Elmer Zhang
* @version 1.0
*/
class SaeTOAuthV2 {
/**
* @ignore
*/
public $client_id;
/**
* @ignore
*/
public $client_secret;
/**
* @ignore
*/
public $access_token;
/**
* @ignore
*/
public $refresh_token;
/**
* Contains the last HTTP status code returned.
*
* @ignore
*/
public $http_code;
/**
* Contains the last API call.
*
* @ignore
*/
public $url;
/**
* Set up the API root URL.
*
* @ignore
*/
public $host = "https://api.weibo.com/2/";
/**
* Set timeout default.
*
* @ignore
*/
public $timeout = 30;
/**
* Set connect timeout.
*
* @ignore
*/
public $connecttimeout = 30;
/**
* Verify SSL Cert.
*
* @ignore
*/
public $ssl_verifypeer = FALSE;
/**
* Respons format.
*
* @ignore
*/
public $format = 'json';
/**
* Decode returned json data.
*
* @ignore
*/
public $decode_json = TRUE;
/**
* Contains the last HTTP headers returned.
*
* @ignore
*/
public $http_info;
/**
* Set the useragnet.
*
* @ignore
*/
public $useragent = 'Sae T OAuth2 v0.1';
/**
* print the debug info
*
* @ignore
*/
public $debug = FALSE;
/**
* boundary of multipart
* @ignore
*/
public static $boundary = '';
/**
* Set API URLS
*/
/**
* @ignore
*/
function accessTokenURL() {
return 'https://api.weibo.com/oauth2/access_token';
}
/**
* @ignore
*/
function authorizeURL() {
return 'https://api.weibo.com/oauth2/authorize';
}
/**
* construct WeiboOAuth object
*/
function __construct($client_id, $client_secret, $access_token = NULL, $refresh_token = NULL) {
$this->client_id = $client_id;
$this->client_secret = $client_secret;
$this->access_token = $access_token;
$this->refresh_token = $refresh_token;
}
/**
* authorize接口
*
* 对应API:{@link http://open.weibo.com/wiki/Oauth2/authorize Oauth2/authorize}
*
* @param string $url 授权后的回调地址,站外应用需与回调地址一致,站内应用需要填写canvas page的地址
* @param string $response_type 支持的值包括 code 和token 默认值为code
* @param string $state 用于保持请求和回调的状态。在回调时,会在Query Parameter中回传该参数
* @param string $display 授权页面类型 可选范围:
* - default 默认授权页面
* - mobile 支持html5的手机
* - popup 弹窗授权页
* - wap1.2 wap1.2页面
* - wap2.0 wap2.0页面
* - js js-sdk 专用 授权页面是弹窗,返回结果为js-sdk回掉函数
* - apponweibo 站内应用专用,站内应用不传display参数,并且response_type为token时,默认使用改display.授权后不会返回access_token,只是输出js刷新站内应用父框架
* @return array
*/
function getAuthorizeURL($url, $response_type = 'code', $state = NULL, $display = NULL) {
$params = array();
$params['client_id'] = $this->client_id;
$params['redirect_uri'] = $url;
$params['response_type'] = $response_type;
$params['state'] = $state;
$params['display'] = $display;
return $this->authorizeURL() . "?" . http_build_query($params);
}
/**
* access_token接口
*
* 对应API:{@link http://open.weibo.com/wiki/OAuth2/access_token OAuth2/access_token}
*
* @param string $type 请求的类型,可以为:code, password, token
* @param array $keys 其他参数:
* - 当$type为code时: array('code'=>..., 'redirect_uri'=>...)
* - 当$type为password时: array('username'=>..., 'password'=>...)
* - 当$type为token时: array('refresh_token'=>...)
* @return array
*/
function getAccessToken($type = 'code', $keys) {
$params = array();
$params['client_id'] = $this->client_id;
$params['client_secret'] = $this->client_secret;
if ($type === 'token') {
$params['grant_type'] = 'refresh_token';
$params['refresh_token'] = $keys['refresh_token'];
} elseif ($type === 'code') {
$params['grant_type'] = 'authorization_code';
$params['code'] = $keys['code'];
$params['redirect_uri'] = $keys['redirect_uri'];
} elseif ($type === 'password') {
$params['grant_type'] = 'password';
$params['username'] = $keys['username'];
$params['password'] = $keys['password'];
} else {
throw new OAuthException("wrong auth type");
}
$response = $this->oAuthRequest($this->accessTokenURL(), 'POST', $params);
$token = json_decode($response, true);
if (is_array($token) && !isset($token['error'])) {
$this->access_token = $token['access_token'];
//$this->refresh_token = $token['refresh_token'];
} else {
throw new OAuthException("get access token failed." . $token['error']);
}
return $token;
}
/**
* 解析 signed_request
*
* @param string $signed_request 应用框架在加载iframe时会通过向Canvas URL post的参数signed_request
*
* @return array
*/
function parseSignedRequest($signed_request) {
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$sig = self::base64decode($encoded_sig);
$data = json_decode(self::base64decode($payload), true);
if (strtoupper($data['algorithm']) !== 'HMAC-SHA256')
return '-1';
$expected_sig = hash_hmac('sha256', $payload, $this->client_secret, true);
return ($sig !== $expected_sig) ? '-2' : $data;
}
/**
* @ignore
*/
function base64decode($str) {
return base64_decode(strtr($str . str_repeat('=', (4 - strlen($str) % 4)), '-_', '+/'));
}
/**
* 读取jssdk授权信息,用于和jssdk的同步登录
*
* @return array 成功返回array('access_token'=>'value', 'refresh_token'=>'value'); 失败返回false
*/
function getTokenFromJSSDK() {
$key = "weibojs_" . $this->client_id;
if (isset($_COOKIE[$key]) && $cookie = $_COOKIE[$key]) {
parse_str($cookie, $token);
if (isset($token['access_token']) && isset($token['refresh_token'])) {
$this->access_token = $token['access_token'];
$this->refresh_token = $token['refresh_token'];
return $token;
} else {
return false;
}
} else {
return false;
}
}
/**
* 从数组中读取access_token和refresh_token
* 常用于从Session或Cookie中读取token,或通过Session/Cookie中是否存有token判断登录状态。
*
* @param array $arr 存有access_token和secret_token的数组
* @return array 成功返回array('access_token'=>'value', 'refresh_token'=>'value'); 失败返回false
*/
function getTokenFromArray($arr) {
if (isset($arr['access_token']) && $arr['access_token']) {
$token = array();
$this->access_token = $token['access_token'] = $arr['access_token'];
if (isset($arr['refresh_token']) && $arr['refresh_token']) {
$this->refresh_token = $token['refresh_token']
没有合适的资源?快使用搜索试试~ 我知道了~
PHP实例开发源码-Tipask php问答系统(仿百度知道) GBK 正式版 release.zip
共521个文件
php:146个
html:134个
png:82个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 179 浏览量
2022-11-21
17:49:57
上传
评论
收藏 2.42MB ZIP 举报
温馨提示
PHP实例开发源码—Tipask php问答系统(仿百度知道) GBK 正式版 release.zip PHP实例开发源码—Tipask php问答系统(仿百度知道) GBK 正式版 release.zip PHP实例开发源码—Tipask php问答系统(仿百度知道) GBK 正式版 release.zip
资源推荐
资源详情
资源评论
收起资源包目录
PHP实例开发源码-Tipask php问答系统(仿百度知道) GBK 正式版 release.zip (521个子文件)
main.css 54KB
ueditor.css 33KB
ueditor.min.css 33KB
jquery-ui.css 27KB
video-js.css 21KB
video-js.min.css 11KB
shCoreDefault.css 7KB
admincp.css 5KB
video.css 4KB
lightbox.css 4KB
style.css 4KB
admin_m.css 3KB
image.css 3KB
attachment.css 3KB
dialogbase.css 2KB
uploadify.css 875B
iframe.css 31B
pinyin.dat 53KB
vjs.eot 3KB
icons.gif 20KB
loading.gif 8KB
bg_repno.gif 5KB
icons-all.gif 4KB
btn_bg.gif 3KB
avatar.gif 3KB
stepnum.gif 3KB
loading.gif 2KB
videologo.gif 2KB
cancelbutton.gif 1KB
login-icon.gif 1KB
qq.gif 1KB
selectimg.gif 1KB
main-left-hover.gif 1KB
button-bg.gif 1KB
lock.gif 1KB
smile.gif 1022B
word.gif 1019B
icon_doc.gif 1012B
icon_psd.gif 1009B
icon_rar.gif 1007B
icon_xls.gif 1005B
icon_ppt.gif 1001B
icon_mv.gif 1001B
icon_pdf.gif 996B
icon_mp3.gif 986B
login.gif 980B
icon_txt.gif 970B
icon_exe.gif 949B
ok.gif 927B
icon_chm.gif 923B
expert.gif 893B
solved.gif 889B
boy.gif 871B
girl.gif 863B
navbg.gif 636B
bg_repx.gif 546B
logo_bg.gif 477B
cursor_v.gif 370B
gold.gif 321B
pic24.gif 312B
pic23.gif 308B
bg_stepstatus.gif 259B
cursor_h.gif 253B
icn_9.gif 230B
icn_4.gif 203B
icn_0.gif 203B
icn_1.gif 203B
icn_2.gif 200B
icn_6.gif 200B
zoomin.gif 197B
main-left-home.gif 189B
anchor.gif 184B
big.gif 175B
small.gif 166B
error.gif 158B
afficeBoxTop_r1_c2.gif 151B
correct.gif 147B
buttonBg.gif 146B
bg_repno.gif 134B
bg_footer.gif 116B
highlighted.gif 111B
unhighlighted.gif 111B
index_icon_r2_c2.gif 102B
leftmenu_bg.gif 101B
bg_list2.gif 101B
zoomout.gif 88B
menu_add.gif 79B
close.gif 76B
menu_reduce.gif 74B
main-left.gif 60B
pagebreak.gif 54B
main-left-a.gif 49B
showmenu.gif 45B
lidot.gif 44B
tr3.gif 44B
ccc.gif 43B
spacer.gif 43B
.htaccess 168B
index.htm 1B
index.htm 1B
共 521 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
毕业_设计
- 粉丝: 1922
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功