自建網站對接微信公衆號


title: 自建網站對接微信公衆號
date: 2018-04-12 15:25
tags:php

  • 微信公衆號,
  • PHP
  • codeigniter

categories: 技術

日常咱們有些寫各類網站, 我的博客系統, 物流管理系統, 通訊錄管理系統, 校園二手網站. 咱們都知道, 只須要租用一個服務器, 再配置一個備案好的域名, 就能夠在瀏覽器上進行訪問了.
不知你們, 不知你們有沒有想過, 將你搭的網站對接微信公衆號, 利用微信這個大用戶軟件, 來爲你引流呢?

| 本文環境 | 版本 |
| --- | --- |
| 操做系統 | Ubuntu 16.04.03 |
| 運行方式 | VMware虛擬機 |
| 編程語言 | PHP |
| 項目局域網地址 | http://192.168.253.1/audit |數據庫


2018-4-1523606408034.jpg

Q: 你在搞笑嗎? 不是直接在微信裏面打開的嗎?編程

A: 直接用微信打開是能夠, 而後你在微信裏面讓用戶再註冊一個帳號? 對於大部分不想麻煩的小夥伴來講, 他們會對此忘而卻步. 其實微信是提供接口, 讓你能夠獲取到微信的用戶名,和用戶頭像的.

通常來講能夠經過三種方式

  1. 使用經過的微信開放平臺( 注意,不是微信公衆平臺)
  2. 使用認證過的訂閱號.
  3. 使用認證過的服務號
以上方式都須要開發者認證或者微信認證

額, 那其實不是沒認證就沒得玩?

好吧, 實際是的確如此, 不過. 若是你真的只是想玩玩. 你能夠去這兒. https://mp.weixin.qq.com/debu...

2018-4-1523712185351.jpg

微信測試號

優勢

  • 擁有幾乎全部接口,
  • 以及享受局域網IP回調(意思就是說,能夠支持局域網, 這是正式微信平臺號所不具有的)
  • 發送模板消息, 不用審覈.

缺點

  • 只支持最多100個用戶
  • 不能設置名稱, 頭像.

對於一些只是想玩玩, 或者小規模用戶的是沒有問題的.json

跟我一塊兒操做

登陸

掃碼登陸就行了;

微信token

新建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, 認證成功後就能夠繼續操做了

2018-4-1523713636476.jpg

TIP: 這個連接並不須要一直可訪問, 只須要第一次認證經過就OK, 甚至認證過能夠直接刪掉.

修改回調域名, 接口> 網頁受權獲取用戶基本信息 > 修改

2018-4-1523781481068.jpg

只有測試號支持ip

微信的接口

接口詳情可在https://mp.weixin.qq.com/wiki...裏查看api

注意:數組

  1. 這些接口不是簡單的對接就行了, 每次請求都須要攜帶access_token,
  2. 而獲取access_token, 天天有獲取上限.
  3. access-token具備有效期(7200s) , 過時須要從新獲取.

獲取access_token的方法https://mp.weixin.qq.com/debu...瀏覽器

獲取用戶信息, 實現免登陸的效果

2018-4-1523714004736.jpg

在這兒咱們須要三個接口

所用接口:

接口一:
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';

2018-4-1523714822433.jpg

第二步:經過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, 若是須要

這是我畫的一個請求過程圖, 能夠幫助理解

enter description here

測試演示

1. 將受權url發給手機

非必需, 也能夠在電腦上, 也能夠寫到公衆號子菜單中點擊進入.

2. 關注測試號

否則會這樣

2018-4-1523781959421.jpg

3. 關注後點擊

2018-4-1523782005232.jpg

2018-4-1523782015976.jpg

測試號訪問成功.

額, 關於後臺代碼原理就不講了.
相似於一個從微信服務器發來的表單, 登陸進了系統, 而後再把這些數據存入數據庫就行了.

正式號運行效果

2018-4-1523890856126.jpg

2018-4-1523890881266.jpg

相關文章
相關標籤/搜索