关于微信接口
2015-12-07 19:30
716 查看
1、如何获取access_token
任何微信系统在这一块都是大同小异,这一块首先来说其实跟我们设置的微信服务器跟我们系统通讯的这个url无关,这个我们访问很多接口的基础,可以看到这个接口需要的是
appid跟secret,我们这个信息在添加公众号的时候就已经保存到了数据库中。我们一般的做法是在比方说微信用户跟某公众号进行交互的时候,接受到的toUsername就是我们的公众号原始Id,我们通过公众号原始Id可以查找到对应的appid及secret,然后我们就可以调用如上类似的接口获取access_token,有了access_token,很多微信的接口就可以调用了。也还有一种可能是我们后台的某些操作,我们能带上id,或者缓存原始id也是可以实现通信的。
2、微信登录并获取用户信息
微信登录是不需要access_token的,但是获取用户信息是需要的access_token跟openid,因此一般来说我们在用户注册的时候会用到如下代码:
//微信登录
上述例子只是说明了要通过微信登录获取到用户的微信号要经历两个步骤,一个步骤授权跳转拿code的过程,这个是需要appid跟secret,跳转回来的时候带了code,然后用这个code带上appid及appsecret就可以获得用户的openid了,然后得到这个openid我们就可以注册什么的了。
任何微信系统在这一块都是大同小异,这一块首先来说其实跟我们设置的微信服务器跟我们系统通讯的这个url无关,这个我们访问很多接口的基础,可以看到这个接口需要的是
appid跟secret,我们这个信息在添加公众号的时候就已经保存到了数据库中。我们一般的做法是在比方说微信用户跟某公众号进行交互的时候,接受到的toUsername就是我们的公众号原始Id,我们通过公众号原始Id可以查找到对应的appid及secret,然后我们就可以调用如上类似的接口获取access_token,有了access_token,很多微信的接口就可以调用了。也还有一种可能是我们后台的某些操作,我们能带上id,或者缓存原始id也是可以实现通信的。
2、微信登录并获取用户信息
微信登录是不需要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我们就可以注册什么的了。
相关文章推荐
- 微信公众号:微信分享获得配置信息
- 微信公众号开发:用户授权获取用户信息
- 怎么做QQ、微信等消息气泡
- iOS-关于微信支付
- windows使用scrapy爬取微信评论
- JAVA开发微信企业号的一些代码片
- 微信红包体系设计分析
- iOS----支付(微信支付、支付宝支付、银联支付控件集成支付)(转)
- java微信网页授权获取用户信息以及JSSDK自定义分享等功能<一>
- PHP中Push(推送)技术,可拥有微信、站内通知等
- 微信支付
- 微信开发 回复用户消息 .net C#
- 微信公众号 修改 应用签名 不生效
- IOS9中各种微信或QQ分享SDK显示为安装软件
- 判断是移动还是pc,判断是否是微信浏览器
- java微信公众号开发(搭建本地测试环境)
- 用java开发微信公众号:测试公众号与本地测试环境搭建(一)
- OpenCV的第一个小程序:读取图像并显示
- 微信聊天界面构思
- Django搭建微信公众平台详解 二