授權流程技術說明:
第三方平臺的申請和上線流程:
https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/how_to_apply.html
在公衆號第三方平臺創建審覈通過後,微信服務器會向其“授權事件接收URL”每隔 10 分鐘推送一次 component_verify_ticket。
SDK 內部已實現緩存 component_veirfy_ticket,開發者無需另行處理該事件。
其餘事件需要開發者自行處理。
注:需要在URL路由中寫上觸發代碼,並且註冊路由後需要等待微信服務器推送 component_verify_ticket,纔有權限進行其他操作,否則報”Component verify ticket does not exists.”
2.路由配置
// 假設你的開放平臺第三方平臺設置的授權事件接收 URL 爲: https://aaaa.com/accept (其他事件推送同樣會推送到這個 URL) Route::any('accept', function () { // 關閉 CSRF // config裏面的4個參數 都是開放平臺裏面的 拿過來就好了 $config = [ 'app_id' => 'xxxxx', 'secret' => 'xxxx', 'token' => 'xxxx', 'aes_key' => 'xxxx' ]; $openPlatform = \EasyWeChat\Factory::openPlatform($config); return $openPlatform->server->serve(); // Done! });
3.控制器接口
//授權
public function auth() { $re=$this->openPlatform->getPreAuthorizationUrl('https://aaaa.com/index'); echo "<div style='margin:0 auto;'><h2><a href='{$re}'>授權</a></h2></div>";die; }
//回調
public function index() { $server = $this->openPlatform-->server; $server->setMessageHandler(function($event) use ($openPlatform) { dd($event); // 事件類型常量定義在 \EasyWeChat\OpenPlatform\Guard 類裏 switch ($event->InfoType) { case Guard::EVENT_AUTHORIZED: // 授權成功 $authorizationInfo = $openPlatform->getAuthorizationInfo($event->AuthorizationCode); //此處省略。。。。。。 } }); }
注意:步驟2中的 路由配置提到線上10分鐘之後 訪問: https://aaaa.com/accept 點擊頁面中的授權 即可得到如下頁面