前段時間做了一個微信第三方授權(quán),一直想寫一篇文章分享一下,但是總是忙,今天終于有空閑給寫出來了,整個流程很簡單清晰,在簽名驗證的地方可能有點兒小坑,并且在用戶取消授權(quán)的時候,微信api說的是會把消息推送到回調(diào)地址中,在這里強調(diào)一下這個回調(diào)地址不是授權(quán)時候的回調(diào)地址,而是你申請第三方平臺時候填寫的授權(quán)地址,閑話少說進入正題。(如有問題,可留言交流)
簡單流程先描述
用戶點擊授權(quán)按鈕 -> 獲取第三方令牌 -> 獲取預授權(quán)碼 -> 進入微信授權(quán)頁面 -> 用戶掃碼授權(quán) -> 微信推送授權(quán)結(jié)果
第一步 維護微信推送的 component_verify_ticket
在第三方平臺創(chuàng)建審核通過后,微信服務(wù)器會向其“授權(quán)事件接收URL”每隔10分鐘定時推送component_verify_ticket,該ticket是加密的xml串,需要解碼獲取到ticket值(用于獲取預授權(quán)碼);
解密用的是php的加解密模塊(安裝php自帶的),代碼用的是微信提供的。
代碼如下
$timeStamp = empty($_GET['timestamp']) ? "" : trim($_GET['timestamp']); // 時間戳 $nonce = empty($_GET['nonce']) ? "" : trim($_GET['nonce']); // 隨機字符 $msg_sign = empty($_GET['msg_signature']) ? "" : trim($_GET['msg_signature']); // 簽名(公鑰) $encryptMsg = file_get_contents('php://input'); // xml $xml_tree = new \DOMDocument(); $xml_tree->loadXML($encryptMsg); $array_