一、如何獲取access_tokenphp
任何微信系統在這一塊都是大同小異,這一塊首先來講其實跟咱們設置的微信服務器跟咱們系統通信的這個url無關,這個咱們訪問不少接口的基礎,能夠看到這個接口須要的是數據庫
appid跟secret,咱們這個信息在添加公衆號的時候就已經保存到了數據庫中。咱們通常的作法是在比方說微信用戶跟某公衆號進行交互的時候,接受到的toUsername就是咱們的公衆號原始Id,咱們經過公衆號原始Id能夠查找到對應的appid及secret,而後咱們就能夠調用如上相似的接口獲取access_token,有了access_token,不少微信的接口就能夠調用了。也還有一種多是咱們後臺的某些操做,咱們能帶上id,或者緩存原始id也是能夠實現通訊的。json
二、微信登陸並獲取用戶信息api
微信登陸是不須要access_token的,可是獲取用戶信息是須要的access_token跟openid,所以通常來講咱們在用戶註冊的時候會用到以下代碼:緩存
<pre name="code" class="php">// 獲取當前用戶的OpenId function get_openid($openid = NULL) { $token = get_token (); if ($openid !== NULL) { session ( 'openid_' . $token, $openid ); } elseif (! empty ( $_REQUEST ['openid'] )) { session ( 'openid_' . $token, $_REQUEST ['openid'] ); } $openid = session ( 'openid_' . $token ); $isWeixinBrowser = isWeixinBrowser (); if (empty ( $openid ) && $isWeixinBrowser) { $callback = GetCurUrl (); OAuthWeixin ( $callback ); } if (empty ( $openid )) { return - 1; } return $openid; }
//微信登陸
服務器
function OAuthWeixin($callback) { $isWeixinBrowser = isWeixinBrowser (); $info = get_token_appinfo (); if (! $isWeixinBrowser || $info ['type'] != 2 || empty ( $info ['appid'] )) { redirect ( $callback . '&openid=-1' ); } $param ['appid'] = $info ['appid']; if (! isset ( $_GET ['getOpenId'] )) { $param ['redirect_uri'] = $callback . '&getOpenId=1'; $param ['response_type'] = 'code'; $param ['scope'] = 'snsapi_base'; $param ['state'] = 123; $url = 'https://open.weixin.qq.com/connect/oauth2/authorize?' . http_build_query ( $param ) . '#wechat_redirect'; redirect ( $url ); } elseif ($_GET ['state']) { $param ['secret'] = $info ['secret']; $param ['code'] = I ( 'code' ); $param ['grant_type'] = 'authorization_code'; $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?' . http_build_query ( $param ); $content = file_get_contents ( $url ); $content = json_decode ( $content, true ); redirect ( $callback . '&openid=' . $content ['openid'] ); } }
// 經過openid獲取微信用戶基本信息,此功能只有認證的服務號才能用 function getWeixinUserInfo($openid, $token) { $access_token = get_access_token ( $token ); if (empty ( $access_token )) { return false; } $param2 ['access_token'] = $access_token; $param2 ['openid'] = $openid; $param2 ['lang'] = 'zh_CN'; $url = 'https://api.weixin.qq.com/cgi-bin/user/info?' . http_build_query ( $param2 ); $content = file_get_contents ( $url ); $content = json_decode ( $content, true ); return $content; }
上述例子只是說明了要經過微信登陸獲取到用戶的微信號要經歷兩個步驟,一個步驟受權跳轉拿code的過程,這個是須要appid跟secret,跳轉回來的時候帶了code,而後用這個code帶上appid及appsecret就能夠得到用戶的openid了,而後獲得這個openid咱們就能夠註冊什麼的了。
微信