Passport.class.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. namespace Cas\Controller;
  3. use KIF\Cache\Memcached;
  4. use KIF\Core\Config;
  5. use KIF\Core\Request;
  6. /**
  7. *
  8. * passport 从第三方获取userid
  9. * @author rabin
  10. *
  11. */
  12. class Passport extends Controller{
  13. private $config;
  14. public function __construct() {
  15. $this->config = Config::getInstance()->get('passport');
  16. //$this->objMemcached = new Memcached();
  17. //$this->refer = 'passportRefer';
  18. }
  19. public function doGet() {
  20. $refer = Request::g ( 'referer' );
  21. //$this->objMemcached->set($this->refer, $refer);
  22. $host = $this->config['url'];
  23. $param = $this->config['param'];
  24. $data = $this->httpPost($host, $param);
  25. $data = json_decode($data, true);
  26. /*
  27. $data['data'] = array
  28. (
  29. 'nickName' => 'rabin',
  30. 'avatar' => 'http://echarts.baidu.com/images/logo.png',
  31. 'tokenId' => '111111',
  32. );
  33. */
  34. if (isset($data['data']) && isset($data['data']['tokenId']) && $data['data']['tokenId']) {
  35. $refer = urldecode($refer);
  36. $refer = str_replace('&amp;', '&', $refer);
  37. $param['nickname'] = $data['data']['nickName'];
  38. $param['headimgurl'] = $data['data']['avatar'];
  39. $param['uid'] = $data['data']['tokenId'];
  40. $refer .= '&' . http_build_query($param);
  41. header ( "Location: " . $refer);
  42. } else {
  43. print_r($data);die;
  44. }
  45. }
  46. private function httpGet($url) {
  47. $curl = curl_init();
  48. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  49. curl_setopt($curl, CURLOPT_TIMEOUT, 500);
  50. curl_setopt($curl, CURLOPT_URL, $url);
  51. $res = curl_exec($curl);
  52. curl_close($curl);
  53. return $res;
  54. }
  55. private function httpPost($url, $param) {
  56. $curl = curl_init();
  57. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  58. curl_setopt($curl, CURLOPT_TIMEOUT, 500);
  59. curl_setopt($curl, CURLOPT_URL, $url);
  60. curl_setopt($curl, CURLOPT_POST, 1);
  61. curl_setopt($curl, CURLOPT_POSTFIELDS, $param);
  62. $res = curl_exec($curl);
  63. curl_close($curl);
  64. return $res;
  65. }
  66. }