一、如何获取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咱们就能够注册什么的了。
微信