解析 signed_request
public parseSignedRequest ( string $signed_request ) : array | ||
$signed_request | string | 应用框架在加载iframe时会通过向Canvas URL post的参数signed_request |
return | array |
/** * 授权页 */ public function actionCallback() { // weibo POST //从POST过来的signed_request中提取oauth2信息 if (!empty($_REQUEST["signed_request"])) { $o = new SaeTOAuthV2(Yii::app()->params['WB_AKEY'], Yii::app()->params['WB_SKEY']); $data = $o->parseSignedRequest($_REQUEST["signed_request"]); if ($data == '-2') { die('签名错误!'); } else { $_SESSION['oauth2'] = $data; } } //print_r($_SESSION['oauth2']); if (empty($_SESSION['oauth2']["user_id"])) { //若没有获取到access token,则发起授权请求 $this->render('auth'); } else { //若已获取到access token,则加载应用信息 //print_r($_SESSION['oauth2']); $c = new SaeTClientV2(Yii::app()->params['WB_AKEY'], Yii::app()->params['WB_SKEY'], $_SESSION['oauth2']['oauth_token'], ''); Yii::app()->session['api'] = $c; $this->redirect('/'); //setcookie( 'weibojs_'.$o->client_id, http_build_query($_SESSION['oauth2']) ); } }
<?php session_start(); include_once 'lib/config.php'; include_once 'lib/saetv2.ex.class.php'; //从POST过来的signed_request中提取oauth2信息 if (!empty($_REQUEST["signed_request"])) { $o = new SaeTOAuthV2(WB_AKEY, WB_SKEY); $data = $o->parseSignedRequest($_REQUEST["signed_request"]); if ($data == '-2') { die('签名错误!'); } else { $_SESSION['oauth2'] = $data; } } //判断用户是否授权 if (empty($_SESSION['oauth2']["user_id"])) { include "lib/auth.php"; exit; } else { $c = new SaeTClientV2(WB_AKEY, WB_SKEY, $_SESSION['oauth2']['oauth_token'], ''); } ?> <!--=============================== AUTH之后的页面内容,AUTH之前的内容是/lib/auth.php ============================================--> <!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" /> <!----------------------我自己的CSS------------------------------> <link href="css/style.css" type="text/css" rel="stylesheet" /> <!---------------------个人CSS库结束----------------------------->