callback.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. /**
  3. * 此为PHP-SDK 2.0
  4. */
  5. require_once(BASE_DATA_PATH.DS.'api'.DS.'snsapi'.DS.'qqweibo'.DS.'tencent.php' );
  6. require_once(BASE_DATA_PATH.DS.'api'.DS.'snsapi'.DS.'qqweibo'.DS.'config.php' );
  7. OAuth::init($client_id, $client_secret);
  8. Tencent::$debug = $debug;
  9. if ($_GET['code']) {//已获得code
  10. $code = $_GET['code'];
  11. $openid = $_GET['openid'];
  12. $openkey = $_GET['openkey'];
  13. //获取授权token
  14. $url = OAuth::getAccessToken($code, $callback);
  15. $r = Http::request($url);
  16. parse_str($r, $out);
  17. //存储授权数据
  18. if ($out['access_token']) {
  19. $_SESSION['qqweibo']['t_access_token'] = $out['access_token'];
  20. $_SESSION['qqweibo']['t_expire_in'] = $out['expires_in'];
  21. $_SESSION['qqweibo']['t_refresh_token'] = $out['refresh_token'];
  22. $_SESSION['qqweibo']['t_uname'] = $out['name'];
  23. $_SESSION['qqweibo']['t_code'] = $code;
  24. $_SESSION['qqweibo']['t_openid'] = $openid;//OpenID可以唯一标识一个用户。在同一个应用下,同一个QQ号码的OpenID是相同的;但在不同应用下,同一个QQ号码可能有不同的OpenID
  25. $_SESSION['qqweibo']['t_openkey'] = $openkey;//OpenKey是与OpenID对应的用户key(用户在第三方应用的腾讯登录态),是验证OpenID身份的验证密钥,大多数API的访问,都需要同时具备OpenID和OpenKey的信息,其有效期为2小时
  26. //验证授权
  27. $r = OAuth::checkOAuthValid();
  28. if ($r) {//成功
  29. //header('Location: ' . $callback);//刷新页面
  30. } else {
  31. //exit('<h3>授权失败,请重试</h3>');
  32. echo "<script>alert('授权失败,请重试');</script>";
  33. echo "<script>window.close();</script>";
  34. exit;
  35. }
  36. } else {
  37. exit($r);
  38. }
  39. } else {//获取授权code
  40. echo "<script>alert('授权失败,请重试');</script>";
  41. echo "<script>window.close();</script>";
  42. exit;
  43. }