/** * 合并默认参数和额外参数 * @param array $params 默认参数 * @param array /string $param 额外参数 * @return array: */ protected function param($params, $param) { $params = parent::param($params, $param); /* 签名 */ ksort($params); $param = array(); foreach ($params as $key => $value) { $param[] = "{$key}={$value}"; } $sign = implode('', $param) . $this->AppSecret; $params['sig'] = md5($sign); return $params; }
public function sohu($token) { $sohu = ThinkOauth::getInstance('sohu', $token); $data = $sohu->call('i/prv/1/user/get-basic-info'); if ('success' == $data['message'] && !empty($data['data'])) { $userInfo['type'] = 'SOHU'; $userInfo['name'] = $data['data']['open_id']; $userInfo['nick'] = $data['data']['nick']; $userInfo['head'] = $data['data']['icon']; return $userInfo; } else { throw_exception("获取搜狐用户信息失败:{$data['message']}"); } }
public function callback($type = null, $code = null) { (empty($type) || empty($code)) && $this->error('参数错误'); //加载ThinkOauth类并实例化一个对象 $sns = ThinkOauth::getInstance($type); //腾讯微博需传递的额外参数 $extend = null; if ($type == 'tencent') { $extend = array('openid' => $this->_get('openid'), 'openkey' => $this->_get('openkey')); } //请妥善保管这里获取到的Token信息,方便以后API调用 //调用方法,实例化SDK对象的时候直接作为构造函数的第二个参数传入 //$qq = ThinkOauth::getInstance('qq', $token); $token = $sns->getAccessToken($code, $extend); //获取当前登录用户信息 if (is_array($token)) { $user_info = A('Type', 'Event')->{$type}($token); if (!$user_info) { //登录失败 $this->error('第三方登录失败,请重新登录', U('login'), 1); } else { //登录成功 /*返回格式 * * [ret] => 0 [msg] => [is_lost] => 0 [nickname] => 护士之家网 [gender] => 男 [province] => 福建 [city] => 龙岩 [year] => 1985 [figureurl] => http://qzapp.qlogo.cn/qzapp/101260590/1C1D1F0487099BF03B1548D21C98221B/30 [figureurl_1] => http://qzapp.qlogo.cn/qzapp/101260590/1C1D1F0487099BF03B1548D21C98221B/50 [figureurl_2] => http://qzapp.qlogo.cn/qzapp/101260590/1C1D1F0487099BF03B1548D21C98221B/100 [figureurl_qq_1] => http://q.qlogo.cn/qqapp/101260590/1C1D1F0487099BF03B1548D21C98221B/40 [figureurl_qq_2] => http://q.qlogo.cn/qqapp/101260590/1C1D1F0487099BF03B1548D21C98221B/100 [is_yellow_vip] => 1 [vip] => 1 [yellow_vip_level] => 7 [level] => 7 [is_yellow_year_vip] => 0 */ } } }