微信开发的时候有一个很便利的途径来进行一个用户的一步注册登录,就是使用用户的微信信息来直接进行登陆,可以省去很多不必要的麻烦。那具体这些信息是如何来获取的呢?

首先呢,我们需要对微信进行一个授权,让微信页面有权限来读取我们的用户信息:

  1. $redirect_uri = urlencode($url); //设置授权页面,此处填写回调的授权页面地址
  2. $scope = 'snsapi_userinfo';
  3. $appid = APPID;
  4.  
  5. $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$appid}&redirect_uri={$redirect_uri}&response_type=code&scope={$scope}&state=1#wechat_redirect";
  6.  
  7. header('location:'.$url);

scope表示一个对用户的一个授权方式,这里我们用snsapi_userinfo也就是弹出式的授权,可以在用户没有关注公主号的情况下一样进行用户信息的获取。

appid就是我们公众号的appid。

回调的地址是在跳转完以后,微信平台会把用户端的页面跳转到这个回调的地址上,并且将一个code以get的形式发送过来,具体的处理方式是这样的:

  1. function https_request($url){
  2. $curl = curl_init(); //初始化一个cURL会话
  3.  
  4. //设置请求选项, 包括具体的url
  5. curl_setopt($curl, CURLOPT_URL, $url);
  6. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); //禁用后cURL将终止从服务端进行验证
  7. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  8. curl_setopt($curl,CURLOPT_HEADER,0); //
  9. curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); //
  10. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  11. $response = curl_exec($curl);
  12. curl_close($curl);
  13.  
  14. $jsoninfo = json_decode($response,true);
  15. return $jsoninfo;
  16. }
  17.  
  18. $code = $_GET["code"];
  19. $token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code";
  20. $token_info = https_request($token_url);
  21.  
  22. //根据openid和access_token查询用户信息
  23. $access_token = $token_info['access_token'];
  24. $openid = $token_info['openid'];
  25.  
  26. $userinfo_url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN";
  27. $user_info = https_request($userinfo_url);

我们从微信平台获得了code以后,就可以去交换access_token以及open_id了,有了access_token和open_id就可以最终获得我们需要的用户信息了,最后提醒下读者,不要忘记再页面的最后跳转回之前用户访问的页面哦,否则用户信息是获取到了,而用户界面就只有一个大白屏了。

微信开发笔记:获取用户openid,以及用户头像昵称等信息的更多相关文章

  1. 微信h5静默和非静默授权获取用户openId和用户信息的方法和步骤:

    原文链接:https://blog.csdn.net/qq_35430000/article/details/79299529 一.openId是什么?openId是用户在当前公众号下的唯一标识('身 ...

  2. 微信网页授权获取用户openid及用户信息

    $code = $_GET["code"];//获取code $appid=“xxxx”;//公众号appid $APPSECRET="xxx";//公众号ap ...

  3. .NET 微信开发之 获取用户数据

    通过微信接口获取用户信息主要分为以下几个步骤: a.获取公众号的access_token b.通过查询所有用户OPenid接口获取所有用户. string url = "https://ap ...

  4. [微信开发] - weixin4j获取网页授权后的code进而获取用户信息

    weixin4j封装好的SnsComponent组件中的方法可以执行该步骤 WeixinUserInfoController : package com.baigehuidi.demo.control ...

  5. asp.net微信开发第四篇----已关注用户管理

    公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的)组成.一次拉取调用最多拉取10000个关注者的OpenID,可以通过 ...

  6. 微信开发之获取openid及推送模板消息

    有很多的朋友再问我怎么获取code,openid之类的问题,在这里我就给大家分享一下. 在做微信支付是需要获取openid的,推送模板消息也是需要openid包括其他一些功能分享等也都是需要的,ope ...

  7. uniapp获取用户OpenId及用户详情

    页面增加一个按钮 <button type="default" open-type="getUserInfo" @click="getUserI ...

  8. 微信开发笔记:公众号获取access_token

    微信开发中,access_token的获取是一种非常常见的功能,通过公众号的appid和appsecret来向微信公众平台请求一个临时通行凭证:access_token.公众平台上的绝大部分操作都会需 ...

  9. 微信开发笔记(accesstoken)

    access_token分两种 一种是公众号权限获取用,调用cgi-bin接口 ,此种token一个公众号同时只有一个,用这一个就够了. 服务器最好缓存. 用这个token前提是用户关注了此公众号. ...

随机推荐

  1. Lattice Reduction (LLL) 算法C代码实现

    废话不多说,大名鼎鼎的Lenstra-Lenstra-Lovasz(LLL) 算法.实现参考论文:Factoring Polynomials with Rational Coefficients, 作 ...

  2. 【Win10】SplitView控件

    SplitView是Win10中的新控件. 用于呈现两部分视图. 一个视图是主要内容,另一个视图是用于导航.(也就是通常说的汉堡菜单.) 主要结构: <SplitView> <Spl ...

  3. Java获取某年第一天和最后一天

    package com.dada.test; import java.text.SimpleDateFormat; import java.util.Calendar; import java.uti ...

  4. C和指针 第十五章 文件I/O

    stdio.h中包含了声明FILE结构 struct _iobuf { char *_ptr; //文件输入的下一个位置 int _cnt; //当前缓冲区的相对位置 char *_base; //指 ...

  5. final和包装类

    ==================================================================================================== ...

  6. 【Network】OVS VXLAN/GRE 实践

    参考资料: OVS/VXLAN/GRE参考 ovs vxlan IP overray_百度搜索 OVS操作总结-Neutron-about云开发 OpenStack OVS GRE/VXLAN网络_z ...

  7. caffe_实战之两个简单的例子(物体分类和人脸检测)

    一.物体分类: 这里使用的是caffe官网中自带的例子,我这里主要是对代码的解释~ 首先导入一些必要的库: import caffe import numpy as np import matplot ...

  8. debian8安装Odoo中的Barcode Scanner Hardware Driver模块时,提示没有evdev

    解决方法: $ apt-get install python-dev python-pip gcc $ apt-get install linux-headers-$(uname -r) $ sudo ...

  9. sh2.sed脚本练习

    1,删除/etc/grub.conf文件中行首的空白字符: sed -r 's@^[[ :spapce: ]] +@@g' /etc/grub.conf 2.替换/etc/inittab 文件中&qu ...

  10. plist文件里边如果最外层是字典的话,读出来是无序的。

    如题. 要想使字典有序的话,可以用数组来存放字典,然后读