接口文档:http://mp.weixin.qq.com/wiki/4/9ac2e7b1f1d22e9e57260f6553822520.html
一、开发者需要先到公众平台官网中的开发者中心页配置授权回调域名,也就是授权链接里面的redirect_url指向的服务器域名。
比如你的REDIRECT_URI是 http://www.iteye.com/cgi-bin/wechat.pl ,那么回调域名就是 www.iteye.com
二、举例:公众号底部设置一个菜单:登录, 它的链接可以如下:
1、静默授权(不需要用户手动点击同意)SCOPE是snsapi_base,只能获取用户的openid
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=http://www.iteye.com/cgi-bin/wechat.pl&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
2、SCOPE是snsapi_userinfo,用来获取用户的基本信息的。但需要用户手动同意(无须关注),就可在授权后获取该用户的基本信息。
三、如果用户同意授权,微信服务器将重定向到redirect_uri,也就是http://www.iteye.com/cgi-bin/wechat.pl/?code=CODE&state=STATE,也就是将code返回给服务端的CGI脚本,脚本就可以获取openid(用户基本信息)
if ($cgi->param('code')) {
my $code = $cgi->param('code');
my $state = $cgi->param('state');
my $wechat = GetOpenidToken($code, $state);
my $openid = $wechat->{openid};
my $token = $wechat->{access_token};
my $unionid = $wechat->{unionid};
write_log("code=$code, openid=$openid, token=$token, unionid=$unionid\nstate=".$state."\n");
$redirect_url = "http://xxxx/test.html?openid=$openid&state=".$state;
print $cgi->redirect($redirect_url);
}
sub GetOpenidToken {
my $code = $_[0];
my $state = $_[1];
//通过code换取网页授权access_token
my $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$APPID."&secret=".$SECRET."&code=".$code."&grant_type=authorization_code";
my $json = JSON->new();
my $ua = LWP::UserAgent->new();
#runging curl,get this json respons
my $req = HTTP::Request->new('POST', $url);
my $response = $ua->request($req);
//如果网页授权作用域为snsapi_userinfo,则可以通过access_token和openid拉取用户信息了。
my $url2 = "https://api.weixin.qq.com/sns/userinfo?access_token=".$ACCESS_TOKEN."&openid=".$OPENID."&lang=zh_CN";
}
关于state
重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节。
服务端获得用户信息后可以根据 不同的state值 来跳转到不同的H5页面
关于UnionID机制
1、请注意,网页授权获取用户基本信息也遵循UnionID机制。即如果开发者有在多个公众号,或在公众号(H5应用)、移动APP应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求。
2、UnionID机制的作用说明:如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为同一用户,对同一个微信开放平台下的不同应用(移动应用、网站应用和公众帐号),unionid是相同的。
关于移动APP授权登录
现在大多数移动APP都支持通过微信直接登录应用,无需注册账号,那么服务端一般就会通过获取用户的微信信息(unionid, 微信昵称,头像,性别等)来创建用户账号。
流程一般是:APP前端调用微信提供的SDK授权登录,获得用户的access_token,openid然后传给服务端,服务端通过access_token和openid拉取用户信息,然后创建账号。
相关推荐
微信公众号开发-Java-代码类(网页授权 事件处理 jssdk分享 加密处理)
weixin_login 微信网页授权实现扫码登录
基于SpringBoot + Mybatis + Themeleaf的微信公众号网页授权demo代码;使用时需修改weinxinutil中的配置为自己申请的测试公众号
微信公众号零基础开发视频--网页授权获取用户基本信息,零基础视频介绍
微信网页开发授权登录PHP文档,使用了PHP,mysql,CURL等技术,大致思路为,用户授权登录,获取用户基本信息,储存在数据库,再次登录,判断数据库,直接登录。
这是个用php写的微信网页授权的登录类。。。。。。。。
文章同步:http://blog.csdn.net/wgyscsf/article/details/51298495
首先呢,“登录”、“授权”、“授权登录”,是一样的意思,不用纠结。 写小程序授权登录的代码前,需要了解清楚openid与unionid的区别,这里再简单介绍一下: 腾讯有个 “微信·开放平台”,只有企业才能注册账号,...
微信公众平台 网页授权获取用户基本信息 //获取从wxProcess.aspx传递过来的跳转地址reurl if (Request.QueryString["reurl"] != null && Request.QueryString["reurl"] != "") { reurl = Request.QueryString["re...
微信网页授权登录文档详细说明
微信网页授权接口,开发语言是PHP,通过两次跳转实现。通过接口获取用户信息,并追加用户信息(如:openid、昵称、头像等)地址参数跳回前端页面。 具体说明:...
java微信授权登陆,模版消息,菜单开发java微信授权登陆,模版消息,菜单开发
Html5界面使用微信授权登录的一些简单的疑惑问题,关于获取code,以及获取openid,结合微信给与的微信接口流程,一步一步获取
正版:php实现微信网页授权登录
c#微信授权登录Demo源码 源码描述: C# 微信公众号授权登录,请在Global文件中配置好微信的appid以及AppSecret。 开发环境为Visual Studio 2010,数据库为SQL2012,使用.net 4.0开发。
前端小程序端:微信小程序技术,使用了WXML、WXSS、JavaScript等语言进行开发,实现了用户在微信内预约核酸检测的功能。 前端网页管理端:Vue技术,使用了Vue.js、Element UI等库进行开发,实现了管理员对预约信息的...
微信网页授权登录,获取用户openID,开发人员可以将获取到的用户openID作为用户名保存到数据库,作为登录凭据
授权需要回调信息,但在开发过程中由于是在本地开发微信回调不到本地,但部署到服务器上又麻烦(效率太低)。所以最后采用了网络穿透来解决,可以使微信的回调信息请求到本地方便开发调试。 具体步骤已经整理成文档...
首先,去微信公众平台测试号管理注册公众号。 ...IDE:IntelliJ IDEA 2020.1.3 x64 (找度娘破解) 微信开发者工具 (官网去下载) jdk版本 :1.8 natapp:NATAPP-内网穿透 ...此篇文章献开发使用,具体线上部署等更新。。。
使用idea开发工具,基于springboot2.x、jwt鉴权、nginx集群,前后端分离的微信Oauth2.0一键登录和微信网页扫码支付测试开发demo