EasyWeChat微信開發平臺第三方接入(Laravel5+,EasyWeChat3.0)
一、準備微信開發平臺賬號(需要認證¥300)
二、看程式碼
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use EasyWeChat\Foundation\Application; class OpenWeixinController extends Controller { protected $options = [ 'open_platform' => [ 'app_id' => 'xx', 'secret' => 'xx', 'token' => 'xxx', 'aes_key' => 'xxx' ], ]; public function index(Request $request) { $this->request = $request; try{ $app = new Application($this->options); $openPlatform = $app->open_platform; return $openPlatform->server->serve(); }catch(\Exception $e){ if(env('APP_DEBUG')){ echo $e->getMessage(); } else { abort(404); } } } public function auth(Request $request) { $app = new Application($this->options); $openPlatform = $app->open_platform; $response = $openPlatform->pre_auth->redirect('http://xxx//index'); //return $response; // 獲取跳轉的連結 $url = $response->getTargetUrl(); echo '<a href="'.$url.'">點選第三方授權</a>'; } }
呼叫auth函式進行第三方授權
三、問題
1、在授權URL測試的時候,如果報AesException: 簽名驗證錯誤,可能是程式碼你引數填寫有錯。一定要注意是填寫第三方平臺的資訊,不是公眾號的資訊。
2、在授權URL測試的時候,如果報Illegal key size,那麼就是指金鑰長度是受限制的,java執行時環境讀到的是受限的policy檔案。去掉這種限制需要下載Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files(https://yunpan.cn/cSrtk3Fk6WgAs 訪問密碼 244a)。替換${java_home}/jre/lib/security/ 下面的local_policy.jar和US_export_policy.jar(jdk,jre最好都替換。)。注意一定要重啟TOMCAT才能生效。
3、component ticket is exprie ticket過期,每10分鐘會微信伺服器會推送到授權事件的URL中。這裡可以不用處理設定過期時間(因為這裡的ticket是無介面呼叫許可權的,而且是微信伺服器自己推送的)
4、注意公眾號訊息處理的URL必須加上$APPID$
5、component_access_token過期時間為2個小時,和公眾號的Token一樣(我處理的是儲存過期時間,超過就請求。而不是定時重新整理)
6、可以選擇你自己需要第三方託管的許可權集,比如你其他訊息只走微信公眾號,只有客服訊息走第三方平臺。
7、異常:請確認授權入口頁所在域名,與授權後回撥頁所在域名相同,並且,此兩者都必須與申請第三方平臺時填寫的授權發起頁域名相同。授權入口頁所在域名:空
(改地址不能直接方法,需要<a href="授權地址"></a>標籤進行跳轉)
8、有可能會出現你每次啟動專案的時候,由於每10分鐘才會驗證一次Ticket,那麼直接呼叫介面,如果伺服器還沒推送,會出現ticket失效(不過在正式環境還好)(就算全網通過後也會推送component_verify_ticket協議)。
9、每次授權後,想要獲取最新的許可權必須重新掃碼授權。否則無法獲取最新的訊息。
10、獲取令牌的官網介面
11、第三方中的授權的URL一級接收公眾號訊息的URL都只能在同一個一級域名下
12、如果是併發量大,做叢集的話,一定要把所有伺服器的ip都加到白名單中