微信授权网页登陆,oauth

1、在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的开发者中心页配置授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加http://等协议头;
2、授权回调域名配置规范为全域名,比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面http://www.qq.com/music.html 、 http://www.qq.com/login.html 都可以进行OAuth2.0鉴权。但http://pay.qq.com 、 http://music.qq.com 、 http://qq.com无法进行OAuth2.0鉴权
3、如果公众号登录授权给了第三方开发者来进行管理,则不必做任何设置,由第三方代替公众号实现网页授权即可

第一步:用户同意授权,获取code

在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认拥有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。

参数说明

参数 是否必须 说明
appid 公众号的唯一标识
redirect_uri 授权后重定向的回调链接地址,请使用urlencode对链接进行处理

特此声明:此回调的url,应该是在对应公众号所设置的域名下的访问路径,如果不是,则浏览器回提示出“该链接无法访问”

如果是jsp,可以写成对应的action,

或者(1:“http://www.xiaoyouhou.com/login.jsp”

例如(2:”www.xiaoyouhou.com/wechatAction_login.do,“

一、进行url编码后,就是如下的链接了https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx4f3aaf0ea47fc448&redirect_uri=http%3a%2f%2fwww.xiaoyouhou.com%2flogin.jsp&response_type=code&scope=snsapi_userinfo&state=promotionID#wechat_redirect

在微信浏览器里打开

二、

打开后提示是否登录授权

点击允许后,浏览器会重定向到上面redirect_uri对应的路径,且会加上state对应的参数

在,浏览器里复制 已经跳转的链接 即可查看,

例如(1:

http://www.xiaoyouhou.com/login.jsp?code=0212d725f3066e54f482caf6fa79520X&state=promotionID

如果是action,则从定向到对应的action, 那么我们就可以在对应的后台代码中获取咱们需要的参数了“code”(下文接扫)

String code = request.getParameter("code");

String param = request.getParameter("state");

response_type 返回类型,请填写code
scope 应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息
state 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节

如果是多个参数,“=” 会被编码成,“%3D”

#wechat_redirect 无论直接打开还是做页面302重定向时候,必须带此参数

第二步

用户同意授权后

如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数redirect_uri?state=STATE

code说明 :
code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。

通过code获取access_token

首先请注意,这里通过code换取的是一个特殊的网页授权access_token,与基础支持中的access_token(该access_token用于调用其他接口)不同。公众号可通过下述接口来获取网页授权access_token。如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。

如果是重定向到action,则访问以下的链接获取access_token

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

参数 是否必须 说明
appid 公众号的唯一标识
secret 公众号的appsecret
code 填写第一步获取的code参数
grant_type 填写为authorization_code

正确时返回的JSON数据包如下:

{
   "access_token":"ACCESS_TOKEN",
   "expires_in":7200,
   "refresh_token":"REFRESH_TOKEN",
   "openid":"OPENID",
   "scope":"SCOPE",
   "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
参数 描述
access_token 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
expires_in access_token接口调用凭证超时时间,单位(秒)
refresh_token 用户刷新access_token
openid 用户唯一标识
scope 用户授权的作用域,使用逗号(,)分隔

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

如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了。

http:GET(请使用https协议)
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

参数说明

参数 描述
access_token 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
openid 用户的唯一标识
lang 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语

返回说明

正确时返回的JSON数据包如下:

{
   "openid":" OPENID",
   " nickname": NICKNAME,
   "sex":"1",
   "province":"PROVINCE"
   "city":"CITY",
   "country":"COUNTRY",
    "headimgurl":    "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
	"privilege":[
	"PRIVILEGE1"
	"PRIVILEGE2"
    ],
    "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
时间: 2024-10-16 07:12:47

微信授权网页登陆,oauth的相关文章

微信公众账号开发之微信登陆Oauth授权-第一篇

我曾经在2012年的时候开始研究微信,那时微信的版本还是处于1.0,当时给朋友帮忙做一个基于微信端的web应用,官方的文档是相当少的,百度搜索出来的东西基本也没有多少实用价值,不过是在官网的基础上作了很少一些改动,就傲骄的发上去说是原创.目前的微信文档已经完善了很多,不过就我个人而言,仍过于有些宽泛,应该详细的地方未做补充,甚至是官方的SDK都有问题(其中有一个微信支付模块下的单词拼错了),给开发者带来不少困扰. 趁着现在手上的事情不多,我打算做一期微信的开发专栏,把每个步骤都尽可能的记录下来,

微信授权登陆

一.前沿:很多时候,我们都需要开发微信功能来实现我们的项目的功能逻辑,微信授权登陆方面的肯定也不少,所以我就封装了个简单的方法来实现,以方便后面使用. 二.流程文档 微信开发者文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432 大概就是5个步骤: 1 :用户同意授权,获取code 2 :通过code换取网页授权access_token 3 :刷新access_token(如果需要) 4 :拉取用户信息(需sco

微信授权登陆接入第三方App(步骤总结)Android。

这几天开发要用到微信授权的功能,所以就研究了一下.可是微信开放平台接入指南里有几个地方写的不清不楚.在此总结一下,以便需要的人. 很多微信公众平台的应用如果移植到app上的话就需要微信授权登陆了. 目前移动应用上微信登录只提供原生的登录方式,需要用户安装微信客户端才能配合使用.也就是如果第三方应用需要微信授权登陆的话就必须在本机上安装了微信.而后续授权登陆或调用接口之类的相当于app和微信两个应用之间通话. 1.首先需要注册微信开放平台,然后获取开发者认证.审批通过之后再创建一个移动应用同样还是

微信授权登陆接入第三方App(步骤总结)Android

微信授权登陆接入第三方App(步骤总结)Android

微信授权登陆遇到的那些坑

第一次玩这个,发个今天遇到的大坑大家高兴高兴.今天做微信授权登陆,那叫一个水深火热啊,一直遇到这个问题 编译出现错误:linker command failed with exit code 1 本宝宝各种百度,网上说的一个比较全的是 http://www.cocoachina.com/bbs/read.php?tid=268353,然而没有一个适合我.我一步一步按微信官方文档做的就是一直报错,可是官网提供的例子却很顺利的运行,我也是醉了.被逼无奈之下直接把例子里的.a文件替换了官网提供的.a文

【微信】网页授权,获取CODE,OPENID,

修改微信授权回调域名 1.在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的开发者中心页配置授权回调域名.请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加http://等协议头: 授权回调域名配置规范为全域名 2.授权回调域名配置规范为全域名,比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面http://www.qq.com/music.html .http://www.qq.com/login.html 都可以进行OAuth2.0鉴权.但

app微信授权登录,公众号网页授权,手机号登录三个账号的关联处理

同一个产品,有公众号网页版(微信授权),app版(微信授权登录.手机号登录) 微信公众号openid和微信app授权登录的openid不一致需要通过unionid来识别用户身份 前提:在微信开放平台中绑定公众账号,才能获取unionid //微信公众平台1.授权成功后 如果有此openid,登录此openid账号 否则有此unionid,登录此unionid账号 否则创建带openid.unionid数据的账号2.绑定手机号 a.当前已绑定有手机号 如果新手机号已被绑定则失败 否则绑定此手机号

PHP微信授权登录信息

文件1:index.php //换成自己的接口信息 $appid = 'XXXXX'; header('location:https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$appid.'&redirect_uri=127.0.0.1/oauth.php&response_type=code&scope=snsapi_userinfo&state=123&connect_redirect=1#we

微信授权登录(PHP)

微信授权登录(PHP) 微信授权 OAuth2.0授权 微信网页授权 主要是在项目中遇到网页授权登录这个需求,就对此做些总结记录. OAuth2.0授权 OAuth是一个开放协议,允许用户让第三方应用以安全且标准的方式获取该用户在某一网站.移动或桌面应用上存储的个人信息,而无需将用户名和密码提供给第三方应用.常见微信.QQ登录,省去管理账户的麻烦,也不会造成用户的流失. 打开微信的官方文档,会看到网页授权一些说明.(有点摸不着头脑,主要是当时没能关联起来,微信文档每次看都那么郁闷!!!) 来了解