在微信公众号开发中实现微信用户自动登陆第三方的功能:

条件:

  1.公众号必须为微信认证服务号;

  2.在公众号接口权限->网页账号 网页授权获取用户基本信息 修改需要OAuth2.0鉴权的域名;


关于网页授权的两种scope的区别说明

  以snsapi_base为scope发起的网页授权,静默授权,不弹出授权页面,只能获取微信用户的openid。

  以snsapi_userinfo为scope发起的网页授权,弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息

  用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。

关于网页授权access_token和普通access_token的区别           

  在用户同意授权后获取的access_token是针对于用户的,可以说是微信用户给第三方网站的授权码一样。

  而普通access_token则类似于公众平台给于第三方网站调用接口的凭借。


根据官网的步骤:

第一步 获取code:

  需要第三方网站进行重定向到包装后的授权地址 如下

$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".WxPayConfig::APPID."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_userinfo&state=success#wechat_redirect";
header("Location:".$url);

appid  为微信公众平台提供的

redirect_ur   是用户同意授权后进入的页面

scope  为上面所提的两种scope 若是需要微信用户的其他资料需要snsapi_userinfo类型(不管用户是否关注公众号都可以获得资料,可以用来第三方平台的用户资料保留和填充)  若只是希望得到openid则可以使用snsapi_base类型

state  其他携带的参数

第二步 将利用第一步获取的code换取该用户授权的access_token:

$code = $_GET['code'];
$url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
//通过get发送
$token_data = file_get_contents($token_url);
$token_arr = json_decode($token_data,true);

appid   为微信公众平台提供的APPID

secret  为微信公众平台提供的APPSECRET

code  第一步获取的code

获取到的参数 进行json_decode转化成数组 返回的数据如下

    access_token     网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
    expires_in          access_token接口调用凭证超时时间,单位(秒)
    refresh_token    用户刷新access_token
    openid              用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID
    scope               用户授权的作用域,使用逗号(,)分隔

第四步:拉取用户信息(需scope为 snsapi_userinfo)

$url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid."&lang=zh_CN";
$resdata = file_get_contents($url);
$data = json_decode($resdata,true);

此处于第二步做法一致

    access_token  第二步获取的access_token

    openid 第二步获取的openid

获取到的参数 进行json_decode转化成数组 返回的数据如下

    openid    用户的唯一标识
    nickname    用户昵称
    sex    用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
    province    用户个人资料填写的省份
    city    普通用户个人资料填写的城市
    country    国家,如中国为CN
    headimgurl    用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。
    privilege    用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)
    unionid    只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。

到此便可以获得了授权的用户的资料了 至于该用户是否已关注该微信公众平台 需要用户管理类接口中的“获取用户基本信息接口” 去获得。

官网还提供了 刷新access_token的接口 和 检查access_token是否有效的接口,其调用方法与第二三步一致。

转载于:https://www.cnblogs.com/LzayCat/p/5495596.html

微信公众平台开发--微信网页授权相关推荐

  1. ASP.NET MVC4 微信公众号开发之网页授权(一):搭建基础环境

    首先你得注册并认证一个个人或企业的微信公众号===服务号从而确保获得以下接口权限: 然后打开公众号设置里的功能设置里找到业务域名和网页授权域名分别填上你的域名(注:已备案的域名),如下图所示: 到这里 ...

  2. 微信公众平台oauth2.0 php,微信公众平台oauth2.0网页授权

    本篇文章你将学到:在自己做的微信网站里,利用oauth2.0网页授权接口获取用户的信息(openid,姓名,性别,地区,头像等).如大转盘等游戏记录哪个微信用户获得什么奖品.H5等小游戏需要把分数与对 ...

  3. 微信授权demo php,PHP微信公众平台oauth2.0网页授权登录类的封装demo

    一.微信授权使用的是OAuth2.0授权的方式.主要有以下简略步骤: 第一步:用户同意授权,获取code 第二步:通过code换取网页授权access_token 第三步:拉取用户信息(需scope为 ...

  4. Java微信公众号开发之网页授权获取用户基本信息

    本篇博客讲解的网页授权只需要前端传递一个backUrl(回调地址) 到后台接口,后台接口会完成整个授权流程,无需前端做更多工作: 一. 前言 微信公众号开发,需要用到网页授权获取用户信息,通过OAut ...

  5. 微信公众号开发系列-网页授权获取用户基本信息

    OAuth2.0网页授权这个也是在做微信公众平台用到最多的,可以利用授权接口对自己平台内用户进行绑定,实现用户扫描码和微信分享.微信签到.微信商城购物等: 1.高级接口OAuth2.0网页授权设置 a ...

  6. 微信公众平台开发 微信JSSDK开发

    根据微信开发文档步骤如下: 1.先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名". JS接口安全域名设置 mi. ...

  7. 微信公众平台开发 微信公众平台示例代码分析

    一.摘要 微信公众平台提供了一个简单的php示例代码,在做进一步开发之前,我们有必要将其详细了解一下. 二.获取代码 微信官网:http://mp.weixin.qq.com/mpres/htmled ...

  8. 微信公众号开发之网页授权认证获取用户的详细信息,实现自动登陆

    原创声明:本文转来源本人另一博客[http://blog.csdn.net/liaohaojian/article/details/70175835]绝非他人处转载 从接触公众号到现在,开发维护了2个 ...

  9. 公众号h5获取手机号权限_微信公众号开发之网页授权(获取用户信息)

    这次暑假留在学校参与工作室的项目,对微信公众号比较感兴趣,所以参与这方面的学习研究. 昨天完成了关于网页授权,获取用户信息方面的功能,所以乘热打铁,写上一篇.实现本篇涉及的 功能,还需要完成一些基础. ...

最新文章

  1. 架构篇:什么才是真正的架构设计?
  2. Android manifest属性总结
  3. “我的父老乡亲”公益征文活动 ——讲述平凡故事,记录小的伟大
  4. pythontcp_TCP编程
  5. 国内唯一,阿里云容器服务进入 Forrester 领导者象限
  6. git 使用攻略小记
  7. Raw Socket编程
  8. vb冒泡排序法流程图_VB算法-冒泡排序教案
  9. 数字基带传输学习笔记00引言
  10. Python3 Flask+nginx+Gunicorn部署(上)
  11. 29岁当教授,发表11篇Nature和Science,这位顶尖科学家正式全职回国
  12. Swift 5 时代的机遇与挑战到底在哪里?
  13. 漫步数学分析三十八——反函数定理
  14. ajax请求携带tooken_9 HTMLJS等前端知识系列之Ajax post请求带有token向Django请求
  15. Promise、then()、catch()详解
  16. jar a java exception has occured_Java Virtual Machine报错:A Java Exception has occured
  17. 常用荧光染料的激发和发射波长
  18. xmind可以画流程图吗_怎样用XMind方便地制作流程图
  19. 计算机网络(五)——网络互联
  20. 刷微信点击量的php,PHP一键刷QQ微信支付宝步数代码

热门文章

  1. gcd的二进制优化笔记
  2. jquery文件的引入
  3. 学习了Python那么长的世界,有没有玩转过hello word?
  4. html5中的dom中的各种节点的层次关系是怎样的
  5. 《jQuery权威指南》学习笔记——第二章
  6. 开发顺序工作流时注意的几个事项
  7. TensorFlow ImportError: (‘Failed to import pydot. You must `pip install pydot`)
  8. Python 机动车强制报废公告--参数分析与实现
  9. 【luogu2737】 [USACO4.1]麦香牛块Beef McNuggets [动态规划 完全背包][数学 扩展欧几里德]...
  10. 与MYSQL的零距离接触(数据类型) 慕课网