|
利用用户登录的code换取用户openid,网站小一点的可以直接用openid作为数据库用户唯一微信ID
换取access_token也需要openid,可见openid是多么重要,也是微信开发的第一站,(后续会出获取access_token的PHP代码{第二站})
注:code=用户允许登录后,回调内容会带上 code(有效期五分钟),开发者需要将 code 发送到开发者服务器后台,使用code 换取 session_key api,将 code 换成 openid 和 session_key
openid=用户的唯一标识
session_key=用户数据进行加密签名的密钥
access_token=公众号的全局唯一接口调用凭据
微信小程示例代码,[JavaScript]
- //微信小程序获取code和GET请求数据
- wx.login({
- success: function(res) {
- //获取登录code= res.code
- if (res.code) {
- //发起网络请求,相等于jq的ajax
- wx.request({
- url: 'https://weixin.c***3.com/code.php', //你服务器code.php文件地址,默认GET。小程序只支持https ,
- data: {
- code: res.code
- }
- //为了自身应用安全,获取的openid和session_key不应该在网络上传输,所以不设置成功回调,可以服务器直接加密存数据库
- })
- } else {
- console.log('获取用户登录态失败!' + res.errMsg)
- }
- }
- });
复制代码 后台服务器code.php处理文件
[PHP]
- <?php
- /**
- * 一段简单的代码
- * 微信登录:获取调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid)
- */
-
- $code =$_GET['code'];
- $appid="wx1f1******dcb";//微信开发者appId
- $secret="502d******f9f8";// appId秘钥
-
- $api="https://api.weixin.qq.com/sns/jscode2session?appid={$appid}&secret={$secret}&js_code={$code}&grant_type=authorization_code"; //调用官方接口
-
- //封装方法:从接口中获取内容
- function httpGet($url){
- $curl = curl_init();
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($curl, CURLOPT_TIMEOUT,500);
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
- curl_setopt($curl, CURLOPT_SSL_VERIFYHOST , true);
- curl_setopt($curl, CURLOPT_URL, $url);
- $res = curl_exec($curl);
- curl_close($curl);
- return $res;
- }
- $str = httpGet($api); //执行方法:从接口中获取内容(json格式)
- echo $str;
- ?>
复制代码 执行成功数据输出json
[HTML]
- //正常返回的JSON数据包
- {
- "openid": "asS5A*****sGDS",
- "session_key": "AS1g6D****215a=="
- }
- //错误时返回JSON数据包(示例为Code无效)
- {
- "errcode": 40029,
- "errmsg": "invalid code"
- }
复制代码 程序简单易懂,没做过的可以学习学习,做过这个的大神请忽略
|
|