查看: 848|回复: 2

[源码分享] [原创手打]php代码获取微信用户openid(微信开发第一站)

[复制链接]
发表于 2017-5-5 13:22 | 显示全部楼层 |阅读模式
官方团队 2017-5-5 13:22 848 2 显示全部楼层
利用用户登录的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]

  1. //微信小程序获取code和GET请求数据
  2. wx.login({
  3.       success: function(res) {
  4.                       //获取登录code= res.code
  5.         if (res.code) {
  6.           //发起网络请求,相等于jq的ajax
  7.           wx.request({
  8.             url: 'https://weixin.c***3.com/code.php', //你服务器code.php文件地址,默认GET。小程序只支持https ,
  9.             data: {
  10.               code: res.code   
  11.             }
  12.             //为了自身应用安全,获取的openid和session_key不应该在网络上传输,所以不设置成功回调,可以服务器直接加密存数据库
  13.           })
  14.         } else {
  15.           console.log('获取用户登录态失败!' + res.errMsg)
  16.         }
  17.       }
  18.     });
复制代码
后台服务器code.php处理文件

[PHP]
  1. <?php
  2. /**
  3. * 一段简单的代码
  4. *  微信登录:获取调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid)
  5. */

  6. $code =$_GET['code'];
  7. $appid="wx1f1******dcb";//微信开发者appId
  8. $secret="502d******f9f8";// appId秘钥

  9. $api="https://api.weixin.qq.com/sns/jscode2session?appid={$appid}&secret={$secret}&js_code={$code}&grant_type=authorization_code"; //调用官方接口

  10. //封装方法:从接口中获取内容
  11. function httpGet($url){
  12.     $curl = curl_init();
  13.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  14.     curl_setopt($curl, CURLOPT_TIMEOUT,500);
  15.     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
  16.     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST , true);
  17.     curl_setopt($curl, CURLOPT_URL, $url);
  18.     $res = curl_exec($curl);
  19.     curl_close($curl);
  20.     return $res;
  21. }
  22. $str = httpGet($api); //执行方法:从接口中获取内容(json格式)
  23. echo $str;
  24. ?>
复制代码
执行成功数据输出json
[HTML]


  1. //正常返回的JSON数据包
  2. {
  3.       "openid": "asS5A*****sGDS",
  4.       "session_key": "AS1g6D****215a=="
  5. }
  6. //错误时返回JSON数据包(示例为Code无效)
  7. {
  8.     "errcode": 40029,
  9.     "errmsg": "invalid code"
  10. }
复制代码
程序简单易懂,没做过的可以学习学习,做过这个的大神请忽略
131420 该用户已被删除
发表于 2017-5-5 16:27 | 显示全部楼层
131420 2017-5-5 16:27 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2024-12-18 21:23 | 显示全部楼层
2655713480 2024-12-18 21:23 显示全部楼层
转发获取可以不
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表 发新帖

快速回复 返回顶部 返回列表