获取微信用户唯一标识openid | 小程序

[复制链接]
hyt_xcx手机认证 实名认证 视频认证 发表于 2017-1-2 23:29:20 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
一、基础知识
  1. ☞ 接口地址
  2. https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
  3. ☞ 请求参数
  4. appid:小程序的唯一标识
  5. secret:小程序的app secret
  6. js_code:用户的登录凭证code(使用wx.login({})可获取到)
  7. grant_type:填写authorization_code
  8. ☞ 返回参数
  9. expires_in:凭证有效时间,单位:秒
  10. openid:用户唯一标识
  11. session_key:会话密匙(考虑到应用安全,不应该在网络上传输session_key)
复制代码


二、客户端原理
  1. 1、使用小程序登录接口wx.login({})获取用户的登录凭证code
  2. 2、使用小程序网络请求API wx.request({})将获取用户登录凭证(code)发送至服务器
  3. 示例
  4. /**************************************
  5. * config:小程序配置文件
  6. * loginUrl:服务器地址
  7. * code:返回参数,用户登录凭证
  8. * wx.login({}):登录接口
  9. * wx.request({}):网络请求API
  10. *
  11. * 作者:TITF-ONealJohn
  12. * 日期:2017-1-1
  13. **************************************/
  14. var CONGIF=require('config');
  15. var OBJ_APP_DATA={};
  16. OBJ_APP_DATA['onLaunch']=function(){
  17.    wx.login({
  18.       success: (res)=>{
  19.         wx.request({
  20.           url:CONGIF.loginUrl,
  21.           data: {
  22.             code:res.code
  23.           },
  24.           method: 'GET',
  25.           success: (res)=>{
  26.             console.log(res.data)
  27.           },
  28.         })
  29.       }
  30.     })
  31. }
  32. App(OBJ_APP_DATA);
复制代码
三、服务端php原理
  1. 1、使用isset()函数检测客户端是否有传递code参数
  2. 示例
  3. if(isset($_GET['code'])){}
  4. 2、使用 curl_init()函数初始化一个CURL会话,初始化成功后返回一个句柄供curl_setopt(), curl_exec(),和 curl_close() 函数使用
  5. 示例
  6. $curl = curl_init();
  7. 3、使用curl_setopt()设置要获取的URL地址
  8. 示例
  9. $url='https://api.weixin.qq.com/sns/jscode2session?appid='.$appid.'&secret='.$secret.'&js_code='.$code.'&grant_type=authorization_code';
  10. curl_setopt($curl, CURLOPT_URL, $url);
  11. 4、设置是否输出header
  12. 示例
  13. curl_setopt($curl, CURLOPT_HEADER, 1);
  14. 5、设置是否输出结果
  15. 示例
  16. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  17. 6、设置是否输出结果
  18. 示例
  19. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  20. 7、设置是否检查服务器端的证书
  21. 示例
  22. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  23. 8、使用curl_exec()将CURL返回的结果转换成正常数据并保存到一个变量
  24. 示例
  25. $data = curl_exec($curl);
  26. 9、使用 curl_close() 关闭CURL会话
  27. 示例
  28. curl_close($curl);
复制代码


回复

使用道具 举报

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

本版积分规则

专注源码分享,教程分享
全国服务电话

187-8198-7163

周一至周8:00-22:00

反馈建议

cdhaoyt@163.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.2© 2001-2013 Comsenz Inc.( 蜀ICP备16032957号-1