<?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'] = $arr['refresh_token'];
}
return $token;
} else {
return false;
}
}
/**
* GET wrappwer for oAuthRequest.
*
* @return mixed
*/
function get($url, $parameters = array()) {
$response = $this->oAuthRequest($url, 'GET', $parameters);
if ($this->format === 'json' && $this->decode_json) {
return json_decode($response, true);
}
return $response;
}
/**
* POST wreapper for oAuthRequest.
*
* @return mixed
*/
function post($url, $parameters = array(), $multi = false) {
$response = $this->oAuthRequest($url, 'POST', $parameters, $multi );
if ($this->format === 'json' && $this->decode_json) {
return json_decode($response, true);
没有合适的资源?快使用搜索试试~ 我知道了~
虚拟物品交易源码,可做虚拟点卡和网站源码下载网.zip
共4669个文件
php:1624个
png:698个
gif:609个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 92 浏览量
2022-04-23
15:52:16
上传
评论
收藏 19MB ZIP 举报
温馨提示
安装说明: 1.首先进行数据库恢复,数据在MYSQL数据库备份文件夹内! 2.MYSQL连接参数配置路径:config.inc.php 其中:$CFG[‘url’] = ‘http://192.168.0.88/’;改成您的域名地址 3.后台管理地址:http://您的域名/adminbcb5.php 用户名:dtmoban 密码:dtmoban 4.如不显示图片,请批量替换192.168.0.88为您的域名! 5.进入后台依次操作:系统维护-网站设置(配置后点击确认)-更新全站-更新缓存即可! 再者说个基础问题: 安装好后,前台出现原始的网址,点击打开404错误。 那是因为你没有在后台设置下系统参数(改成你的网址)并生成全站 清理缓存即可。
资源推荐
资源详情
资源评论
收起资源包目录
虚拟物品交易源码,可做虚拟点卡和网站源码下载网.zip (4669个子文件)
99bill[1].cert.rsa.20140803.cer 1KB
Personal.css 40KB
sell.css 29KB
Public.css 27KB
list_detail.css 27KB
buy.css 24KB
index.css 23KB
release.css 22KB
wonder-mg.css 20KB
7881.common.css 18KB
7881.common1.css 18KB
7881_002.css 18KB
shengji.css 17KB
style.css 16KB
global_new1.css 14KB
global.css 14KB
global_new.css 14KB
login.css 14KB
an-fir.css 13KB
7881.help.css 13KB
7881.css 13KB
global.css 13KB
style.css 10KB
header.css 10KB
login.css 10KB
change.css 9KB
7881app.css 8KB
style.css 7KB
fck_editor.css 6KB
touch.css 5KB
Security.css 5KB
index.css 5KB
global.css 5KB
boutique-games.css 5KB
phone_game.css 5KB
common.css 5KB
complaint.css 5KB
about.css 5KB
fck_dialog.css 4KB
lbui.phonevalidator.css 4KB
mall.css 3KB
chat.css 3KB
comment.css 3KB
helpcenter.css 3KB
change.css 3KB
fck_internal.css 3KB
upload.css 2KB
know.css 2KB
style.css 2KB
help.css 2KB
style.css 2KB
style.css 2KB
style.css 2KB
style.css 2KB
group.css 2KB
spread.css 2KB
style.css 2KB
popLayer.css 2KB
jquery.slide.css 2KB
vote.css 2KB
catalog.css 2KB
quote.css 2KB
archiver.css 1KB
index.css 1KB
article.css 1KB
style.css 1KB
common.css 1KB
login.css 1KB
msg.css 1KB
photo.css 996B
special.css 981B
fck_showtableborders_gecko.css 806B
wap.css 801B
fck_dialog_common.css 769B
message.css 756B
exhibit.css 693B
sell.css 588B
down.css 522B
brand.css 491B
fck_editorarea.css 491B
message.css 479B
gift.css 418B
video.css 409B
info.css 321B
poll.css 277B
ie6.css 273B
WdatePicker.css 158B
job.css 121B
buy.css 121B
mall.csv 1KB
member.csv 1KB
sell.csv 964B
job.csv 911B
company.csv 908B
buy.csv 881B
group.csv 852B
ad.csv 851B
mall_order.csv 824B
info.csv 813B
resume.csv 785B
共 4669 条
- 1
- 2
- 3
- 4
- 5
- 6
- 47
资源评论
智慧浩海
- 粉丝: 1w+
- 资源: 5141
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功