MediaOAuthController.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. namespace app\v1\controller\advert;
  3. use app\v1\logic\advert\MediaListLogic;
  4. use app\v1\validate\advert\MediaListValidate;
  5. use plugin\saiadmin\basic\BaseController;
  6. use support\Request;
  7. use support\Response;
  8. /**
  9. * 媒体开发者账号-应用授权回调地址
  10. */
  11. class MediaOAuthController extends BaseController
  12. {
  13. /**
  14. * 构造函数
  15. */
  16. public function __construct()
  17. {
  18. $this->logic = new MediaListLogic();
  19. parent::__construct();
  20. }
  21. /**
  22. * https://api.com/MediaOAuth/callback/{channel}
  23. * state={cmid:1}
  24. * cmid 是广告app的表id
  25. */
  26. public function callback(Request $request, string $channel): Response
  27. {
  28. $callback = $request->get();
  29. $channel = ucfirst($channel); // 如 "toutiao" → "Toutiao""
  30. $channelClass = "app\\adapter\\{$channel}Adapter"; // 适配器类名
  31. $oathInfo = (new $channelClass)->OAuth($callback);
  32. // 写授权结果
  33. (new $channelClass)->writeOAuthResult($oathInfo);
  34. // 写入广告账户列表
  35. (new $channelClass)->getSubAccounts($oathInfo);
  36. // 刷新token
  37. (new $channelClass)->refreshToken($oathInfo);
  38. return $this->success();
  39. }
  40. }