微信公众平台开发--微信网页授权

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

条件:

  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是否有效的接口,其调用方法与第二三步一致。

时间: 2024-10-24 06:33:30

微信公众平台开发--微信网页授权的相关文章

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

本篇文章你将学到:在自己做的微信网站里,利用oauth2.0网页授权接口获取用户的信息(openid,姓名,性别,地区,头像等).如大转盘等游戏记录哪个微信用户获得什么奖品.H5等小游戏需要把分数与对应用户捆绑在一起等网页应用. 微信公众平台oauth2.0网页授权能干什么 它是在自己做的网站中不用用户登录来获取微信用户相关信息的,进而实现相关业务. 说明与注意 1.网页授权分为两种, 一种为只获取openid  (基本授权 snsapi_base) 一种为获取用户全部信息 (高级授权 snsa

C#微信公众号开发之网页授权oauth2.0获取用户基本信息(二)

C#微信公众号开发之网页授权oauth2.0获取用户基本信息(一) 中讲解了如果通过微信授权2.0snsapi_base获取已经关注用户的基本信息,然而很多情况下我们经常需要获取非关注用户的信息,方法如下: 第一步和之前讲的一样:获取code,但是scope使用方法是snsapi_userinfo; 第二步,根据code获取openid和access_token(此处的access_token是通过网页授权code换取的不是我们之前讲的全局的票据),代码: 1 /// <summary> 2

微信公众平台开发(106) 网页获取用户地理位置

关键字:微信公众平台 JSSDK 获取地理位置接口 网页获取用户地理位置 getLocation作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/weixin-web-location.html 在这篇微信公众平台开发教程中,我们将介绍如何在网页中获取用户的地理位置信息. 本文分为以下二个部分: 生成JS-SDK权限验证签名 使用地理位置接口获取坐标 一.微信JS-SDK 1. 获得Access Token access token的获得方法在前面有介绍,

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

OAuth2.0网页授权这个也是在做微信公众平台用到最多的,可以利用授权接口对自己平台内用户进行绑定,实现用户扫描码和微信分享.微信签到.微信商城购物等: 1.高级接口OAuth2.0网页授权设置 a.进入高级接口列表-OAuth2.0-点击修改设置授权域名,域名可以上一级域名和二级域名 b.填写要设置授权域名,我这里用的的是二级域名 体授权Url规则见下面详细描述,主要摘自微信公众平台开发文档,点击进入 2.网页授权获取用户基本信息说明 如果用户在微信中(Web微信除外)访问公众号的第三方网页

微信公众号开发之网页授权登录及code been used 解决!

首先微信公众号开发网页授权登录使用环境: 开发工具:eclipse:服务器:tomcat8,开发语言:JAVA. 我写的网页授权登录时用开发者模式自定义view类型按钮点击跳转链接的. 微信网页授权登录首先以官方微信开发文档为准,大体共分为4步: 先说第一步获取code: code说明:code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5扽这未被使用自动过期. 微信公众开发文档给的有获取code的链接,建议直接复制来用,然后替换其中相应的参

微信公众平台开发——关于网页签名那些事

如果从微信公众号通过菜单的响应类型view来打开网页,首先这个网页必须要有正常的域名,不允许是ip地址.如果这个网页没有备案或者说这个域名没有备案,那么进入这个网页之前微信会先弹出一个网页提示我们是继续访问或者使用原网页打开,这是非常烦人的,因为每次你用a标签或者href来跳转网页时都会这样.最简单的办法就是使用备案的域名绑定你的服务器上网页地址.如果你实在觉得备案麻烦,那么你也可以这样这样做: 使用微信对网页授权的办法进入页面.可以先了解https://mp.weixin.qq.com/wik

微信公众平台开发——微信授权登录(OAuth2.0)

1.OAuth2.0简介 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据.每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频).这样,OAuth允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要分享他们

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

根据微信开发文档步骤如下: 1.先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”. JS接口安全域名设置 mi.com(前面不用带www/http,域名必须备案过) 2.引入JS文件在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.0.0.js 3.通过config接口注入权限验证配置 wx.config({ debug: true, // 开启调试模式,调用的所有api的返回值

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

原创声明:本文转来源本人另一博客[http://blog.csdn.net/liaohaojian/article/details/70175835]绝非他人处转载 从接触公众号到现在,开发维护了2个公众号,开发过程中遇到很多问题,现在把部分模块功能在这备案一下,做个总结也希望能给其他人帮助 工欲善其事,必先利其器,先看看开发公众号需要准备或了解什么 web开发工具:官方提供的开发工具,使用自己的微信号来调试微信网页授权.调试.检验页面的 JS-SDK 相关功能与权限,模拟大部分 SDK 的输入