Passport.class.php 2.8 KB

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