微信開發準備工作
1、申請公眾號測試賬號地址,先註冊賬號
http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index
2、更改介面資訊配置的Token與URL地址
注:該URL是直接指向到具體能訪問到的地址。
3、設定JS安全域名與設定網頁授權回撥地址
功能列表 -- 網頁服務
4、開始接入微信驗證Token
<?php
namespace Test;
class TestController extends Controller
{
public function tokenSignature()
{
$timestamp = $_GET['timestamp'];
$nonce = $_GET['noonce'];
$token = 'sxs-hd'; //該處的值應該和第二條的TOKEN值一樣
$signature = $_GET['signature'];
$array = array($timestamp, $nonce, $token);
sort($array);
//排序之後的資料拼接好使用sha1加密
$tmpstr = implode('', $array);
$tmpstr = sha1($tmpstr);
//將加密後的字串與singature進行對比,判斷是否來自微信請求
if ($tmpstr == $signature) {
exit($_GET['echostr']);
}
}
}
5、獲取自身的access_token值
<?php
public function get_access_token()
{
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='. self::APP_ID .'&secret=' . self::APP_SECRET;
$token = file_get_contents($url);
var_dump($token);
//正常返回
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200
}
//失敗返回
{
"errcode":40013,
"errmsg":"invalid appid"
}
}
6、獲取使用者網頁身份授權
- 第一步:使用者同意授權,獲取code值
<?php $params = http_build_query([ 'appid' => '你的APPID', 'redirect_uri => urlencode('https://mm.shaxiaoseng.com/Test/code'), //獲取之後回撥地址 'response_type' => 'code', 'scope' => 'snsapi_base', 'state' => 123 ]); $url = 'https://open.weixin.qq.com/connect/oauth2/authorize?' . $params . '#wechat_redirect'; #把上面的url在微信客戶端開啟就能看到返回的code值
-
第二步:通過code換取網頁授權access_token
//根據第一步獲取到的code並回撥到本方法 public function code() { #根據拿到的code值去訪問使用者的access_token令牌 $params = http_build_query([ 'appid' => 'APPID', 'secret' => 'APP_SECERT', 'code' => $_GET['code'], 'grant_type' => 'authorization_code' ]); $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?' . $params; $result = file_get_contents($url); var_dump($result); //正確返回 { "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN", "openid":"OPENID", "scope":"SCOPE" } }
- 第三步:重新整理access_token令牌
- 第四步:拉取使用者資訊
- 第五步:檢驗授權憑證(access_token)是否有效
其它的開發可以直接檢視微信官方手冊 [手冊地址]
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842