关于微信接口
2016-02-17 00:00
330 查看
1、如何获取access_token
任何微信系统在这一块都是大同小异,这一块首先来说其实跟我们设置的微信服务器跟我们系统通讯的这个url无关,这个我们访问很多接口的基础,可以看到这个接口需要的是appid跟secret,我们这个信息在添加公众号的时候就已经保存到了数据库中。我们一般的做法是在比方说微信用户跟某公众号进行交互的时候,接受到的toUsername就是我们的公众号原始Id,我们通过公众号原始Id可以查找到对应的appid及secret,然后我们就可以调用如上类似的接口获取access_token,有了access_token,很多微信的接口就可以调用了。也还有一种可能是我们后台的某些操作,我们能带上id,或者缓存原始id也是可以实现通信的。2、微信登录并获取用户信息微信登录是不需要access_token的,但是获取用户信息是需要的access_token跟openid,因此一般来说我们在用户注册的时候会用到如下代码:
![](http://static.oschina.net/uploads/img/201602/17181109_bABl.jpg)
<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我们就可以注册什么的了。
相关文章推荐
- 微信管家配置指南
- Android 仿微信图片选择器
- C#开发微信公众平台-就这么简单
- 微信公众号开发-微信网页授权获取用户openid以及用户信息的步骤
- js识别安卓和ios及pc端,以及解决微信的屏蔽
- 微信 二维码生成
- Android微信文件分享
- Zabbix与微信报警
- 微信公众号开发- 网页授权Oauth2.0及API开发
- 微信公众平台生成带参数二维码
- 微信开发教程
- android 应用实现微信好友或朋友圈分享
- 微信红包随机算法初探
- 一个大水的微信入坑经验
- H5外包,微信H5开发
- V3微信支付开发笔录
- 微信支付之扫码支付(java版 native原生支付)
- 【免费】微信群讲座:如何成为专家
- 微信开发教程:用户账号绑定到微信公众号的方法分享
- 微信支付提现开始收费会丢掉太多用户吗?