get_callback_url(__CLASS__).'">
';
}
function login($auth,&$usrdata){
$token = $this->request_token();
$access_url = $this->access_url($token);
return false;
echo 'asfds';
}
function loginout($auth,$backurl="index.php"){
unset($_SESSION['account'][$this->type]);
unset($_SESSION['last_error']);
header('Location: '.$backurl);
}
function get_data(){
}
function get_id(){
}
function get_expired(){
}
private function access_url($token){
$headers = array(
'oauth_consumer_key'=>$this->oauth_consumer_key,
'oauth_signature_method'=>'HMAC-SHA1',
'oauth_timestamp'=>time(),
'oauth_nonce'=>md5(microtime()),
'oauth_version'=>'1.0',
'oauth_token'=>$token['oauth_token'],
);
$headers['oauth_signature'] = $this->to_signature_key('GET',$this->access_token_url,$headers,$this->oauth_consumer_secret.'&'.$token['oauth_token_secret']);
return $this->access_token_url.'?'.utils::http_build_query($headers);
}
private function request_token(){
$headers = array(
'oauth_consumer_key'=>$this->oauth_consumer_key,
'oauth_signature_method'=>'HMAC-SHA1',
'oauth_timestamp'=>time(),
'oauth_nonce'=>md5(microtime()),
'oauth_version'=>'1.0',
);
$headers['oauth_signature'] = $this->to_signature_key('POST',$this->request_token_url,$headers,$this->oauth_consumer_secret.'&');
$result = kernel::single('base_httpclient')->post($this->request_token_url,$headers,$data);
parse_str($result,$return);
return $return;
}
private function to_signature_key($method,$url,$data,$secret){
ksort($data);
$data = $method.'&'.urlencode($url).'&'.utils::urlencode(http_build_query($data));
return $this->hmacsha1($secret,$data);
}
private function hmacsha1($key,$data) {
$blocksize=64;
$hashfunc='sha1';
if (strlen($key)>$blocksize)
$key=pack('H*', $hashfunc($key));
$key=str_pad($key,$blocksize,chr(0x00));
$ipad=str_repeat(chr(0x36),$blocksize);
$opad=str_repeat(chr(0x5c),$blocksize);
$hmac = pack(
'H*',$hashfunc(
($key^$opad).pack(
'H*',$hashfunc(
($key^$ipad).$data
)
)
)
);
return base64_encode($hmac);
}
function get_config(){
$ret = app::get('pam')->getConf('passport.'.__CLASS__);
if($ret && isset($ret['shopadmin_passport_status']['value']) && isset($ret['site_passport_status']['value'])){
return $ret;
}else{
$ret = $this->get_setting();
$ret['passport_id']['value'] = __CLASS__;
$ret['passport_name']['value'] = $this->get_name();
$ret['shopadmin_passport_status']['value'] = 'false';
$ret['site_passport_status']['value'] = 'false';
$ret['passport_version']['value'] = '1.5';
app::get('pam')->setConf('passport.'.__CLASS__,$ret);
return $ret;
}
}
function set_config(&$config){
$save = app::get('pam')->getConf('passport.'.__CLASS__);
if(count($config))
foreach($config as $key=>$value){
if(!in_array($key,array_keys($save))) continue;
$save[$key]['value'] = $value;
}
return app::get('pam')->setConf('passport.'.__CLASS__,$save);
}
function get_setting(){
return array(
'passport_id'=>array('label'=>app::get('pam')->_('通行证id'),'type'=>'text','editable'=>false),
'passport_name'=>array('label'=>app::get('pam')->_('通行证'),'type'=>'text','editable'=>false),
'shopadmin_passport_status'=>array('label'=>app::get('pam')->_('后台开启'),'type'=>'bool',),
'site_passport_status'=>array('label'=>app::get('pam')->_('前台开启'),'type'=>'bool',),
'passport_version'=>array('label'=>app::get('pam')->_('版本'),'type'=>'text','editable'=>false),
);
}
}