title: 自建網站對接微信公衆號
date: 2018-04-12 15:25
tags:php
日常咱們有些寫各類網站, 我的博客系統, 物流管理系統, 通訊錄管理系統, 校園二手網站. 咱們都知道, 只須要租用一個服務器, 再配置一個備案好的域名, 就能夠在瀏覽器上進行訪問了.
不知你們, 不知你們有沒有想過, 將你搭的網站對接微信公衆號, 利用微信這個大用戶軟件, 來爲你引流呢?
| 本文環境 | 版本 |
| --- | --- |
| 操做系統 | Ubuntu 16.04.03 |
| 運行方式 | VMware虛擬機 |
| 編程語言 | PHP |
| 項目局域網地址 | http://192.168.253.1/audit |數據庫
Q: 你在搞笑嗎? 不是直接在微信裏面打開的嗎?編程
A: 直接用微信打開是能夠, 而後你在微信裏面讓用戶再註冊一個帳號? 對於大部分不想麻煩的小夥伴來講, 他們會對此忘而卻步. 其實微信是提供接口, 讓你能夠獲取到微信的用戶名,和用戶頭像的.
以上方式都須要開發者認證或者微信認證
好吧, 實際是的確如此, 不過. 若是你真的只是想玩玩. 你能夠去這兒. https://mp.weixin.qq.com/debu...
優勢
- 擁有幾乎全部接口,
- 以及享受局域網IP回調(意思就是說,能夠支持局域網, 這是正式微信平臺號所不具有的)
- 發送模板消息, 不用審覈.
缺點
- 只支持最多100個用戶
- 不能設置名稱, 頭像.
對於一些只是想玩玩, 或者小規模用戶的是沒有問題的.json
掃碼登陸就行了;
新建php文件(啥語言均可以,自行修改)
public function token() { $nonce = $_GET['nonce']; $token = 'weixin'; $timestamp = $_GET['timestamp']; $echostr = $_GET['echostr']; $signature = $_GET['signature']; //造成數組,而後按字典序排序 $array = array(); $array = array($nonce, $timestamp, $token); sort($array); //拼接成字符串,sha1加密 ,而後與signature進行校驗 $str = sha1(implode($array)); if ($str == $signature && $echostr) { //第一次接入weixin api接口的時候 echo $echostr; exit; } }
而後在測試號裏填寫路徑和token, 認證成功後就能夠繼續操做了
TIP: 這個連接並不須要一直可訪問, 只須要第一次認證經過就OK, 甚至認證過能夠直接刪掉.
只有測試號支持ip
接口詳情可在https://mp.weixin.qq.com/wiki...裏查看api
注意:數組
- 這些接口不是簡單的對接就行了, 每次請求都須要攜帶access_token,
- 而獲取access_token, 天天有獲取上限.
- access-token具備有效期(7200s) , 過時須要從新獲取.
獲取access_token的方法https://mp.weixin.qq.com/debu...瀏覽器
在這兒咱們須要三個接口
接口一:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
接口二:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
接口三:
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
接口四: 刷新access_token
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
接口返回數據, 詳見https://mp.weixin.qq.com/wiki...
第一步:用戶贊成受權,獲取code
示例:( 注意appid, redirect_url是變量)服務器
$str = 'http://open.weixin.qq.com/connect/oauth2/authorize?appid=wx20874ebf2ea1fc7f&redirect_uri=' . urlencode("http://192.168.253.1/audit/client/") . '&response_type=code&scope=snsapi_base&state=123#wechat_redirect';
第二步:經過code換取網頁受權access_token微信
示例
$data = json_decode(file_get_contents("https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $this->appid . "&secret=" . $this->secret . "&code=" . $_GET['code'] . "&grant_type=authorization_code"));
注意: 此處的access_token與上面的access_token不是同一個東西
第三步: 經過access_token換取userinfoapp
示例
$userInfo = json_decode(file_get_contents("https://api.weixin.qq.com/sns/userinfo?access_token=" . $data->access_token . "&openid=" . $data->openid . "&lang=zh_CN"));
刷新access_token, 若是須要
這是我畫的一個請求過程圖, 能夠幫助理解
非必需, 也能夠在電腦上, 也能夠寫到公衆號子菜單中點擊進入.
否則會這樣
額, 關於後臺代碼原理就不講了.
相似於一個從微信服務器發來的表單, 登陸進了系統, 而後再把這些數據存入數據庫就行了.