微信公众号授权登录的超详细步骤

目录
  • 第一步:用户同意授权,获取code
  • 第二步:通过code换取网页授权access_token
  • 第三步:刷新access_token(如果需要)
  • 第四步:拉取用户信息(需scope为 snsapi_userinfo)
  • 附:检验授权凭证(access_token)是否有效
  • 总结

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

在确保公众账号拥有授权作用域(scope参数)的权限的前提下,引导关注者打开如下页面:

尤其注意:如果链接的参数顺序不对,授权页面将无法正常访问

https://open.weixin.qq.com/connect/oauth2/authorize
?appid=APPID // 公众号的唯一标识
&redirect_uri=REDIRECT_URI // 授权后重定向的回调链接地址, 使用 urlEncode 对链接进行处理
&response_type=code // 返回类型,填写code
&scope=SCOPE // 应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且, 即使在未关注的情况下,只要用户授权,也能获取其信息 )
&state=STATE#wechat_redirect // 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节。#wechat_redirect	是	无论直接打开还是做页面302重定向时候,必须带此参数

若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。

参考链接(请在微信客户端中打开此链接体验):

尤其注意:跳转回调redirect_uri,应当使用https链接来确保授权code的安全性。

// scope为snsapi_base
https://open.weixin.qq.com/connect/oauth2/authorize
?appid=wx520c15f417810387
&redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60
&response_type=code
&scope=snsapi_base
&state=123#wechat_redirect

//scope为snsapi_userinfo
https://open.weixin.qq.com/connect/oauth2/authorize
?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php
&response_type=code
&scope=snsapi_userinfo
&state=STATE#wechat_redirect

用户同意授权后

如果用户同意授权,页面将跳转至

redirect_uri/?code=CODE&state=STATE。

第二步:通过code换取网页授权access_token

公众号可通过下述接口来获取网页授权access_token。如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。

尤其注意:由于公众号的secret和获取到的access_token安全级别都非常高,必须只保存在服务器,不允许传给客户端。后续刷新access_token、通过access_token获取用户信息等步骤,也必须从服务器发起。

// 请求方法
// 获取code后,请求以下链接获取access_token:
https://api.weixin.qq.com/sns/oauth2/access_token
?appid=APPID // 公众号的唯一标识
&secret=SECRET // 公众号的appsecret
&code=CODE // 填写第一步获取的code参数
&grant_type=authorization_code // 	填写为authorization_code

// 返回说明
// 正确时返回的JSON数据包如下:
{
  "access_token":"ACCESS_TOKEN", // 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
  "expires_in":7200, // access_token接口调用凭证超时时间,单位(秒)
  "refresh_token":"REFRESH_TOKEN", // 用户刷新access_token
  "openid":"OPENID", // 用户唯一标识
  "scope":"SCOPE"  // 用户授权的作用域,使用逗号(,)分隔
}

第三步:刷新access_token(如果需要)

access_token拥有较短的有效期,当access_token超时后,可以使用refresh_token进行刷新,refresh_token有效期为30天,当refresh_token失效之后,需要用户重新授权。

// 请求方法
// 获取第二步的refresh_token后,请求以下链接获取access_token:
https://api.weixin.qq.com/sns/oauth2/refresh_token
?appid=APPID // 公众号的唯一标识
&grant_type=refresh_token // 填写为refresh_token
&refresh_token=REFRESH_TOKEN // 填写通过access_token获取到的refresh_token参数

//返回说明
//正确时返回的JSON数据包如下:
{
  "access_token":"ACCESS_TOKEN",
  "expires_in":7200,
  "refresh_token":"REFRESH_TOKEN",
  "openid":"OPENID",
  "scope":"SCOPE"
}

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

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

//请求方法
//http:GET(请使用https协议)
https://api.weixin.qq.com/sns/userinfo
?access_token=ACCESS_TOKEN // 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
&openid=OPENID // 用户的唯一标识
&lang=zh_CN // 国家地区语言版本

//返回说明
//正确时返回的JSON数据包如下:
{
  "openid": "OPENID",
  "nickname": NICKNAME,
  "sex": 1,
  "province":"PROVINCE",
  "city":"CITY",
  "country":"COUNTRY",
  "headimgurl":"https://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
  "privilege":[ "PRIVILEGE1" "PRIVILEGE2"     ],
  "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}

附:检验授权凭证(access_token)是否有效

// 请求方法
// http:GET(请使用https协议)
https://api.weixin.qq.com/sns/auth
?access_token=ACCESS_TOKEN
&openid=OPENID

示例:

<script>
	// 1、授权
	export default {
		onLoad() {
			this.wx_login();
		},
		methods: {
			//微信登录
			wx_login(){
				let appId= 'wxe1*******2d0d3d';
				let Host = encodeURIComponent('https://ceshi.com/pages/guide/getOpenid');
				console.log(Host);
				window.location.href =`https://open.weixin.qq.com/connect/oauth2/authorize?
				appid=${appId}
				&redirect_uri=${Host}
				&response_type=code
				&scope=snsapi_userinfo
				&state=STATE#wechat_redirect`
			},
		},
	}

	// getOpenid页面获取openid
	export default {
		onLoad(option) {
			var arr = window.location.search;
			var code = arr.split('=')[1].split('&')[0];
			this.$http.post("/api/WxPay/getOpenid",{
				code:code
			}).then(res=>{
				if(res.code == 1){
					uni.setStorageSync('openid', res.data.openid);
					this.$goBack(3,'/pages/index/index')
				}
			})
		},
	}
</script>

总结

到此这篇关于微信公众号授权登录的文章就介绍到这了,更多相关微信公众号授权登录内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 微信公众号网页授权登录的超简单实现步骤

    目录 前言 一.微信公众号授权登录到底哪几步 二.回调地址,安全域名怎么配置 三.代码怎么写 四.出现问题怎么办 总结 前言 这篇文章带大家掌握 从0到1实现微信公众平台授权登录 微信公众号授权登录到底哪几步回调地址,安全域名怎么配置代码怎么写出了问题怎么办 一.微信公众号授权登录到底哪几步 官方文档介绍微信开放文档微信开发者平台文档https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_author

  • 微信公众号 网页授权登录及code been used解决详解

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

  • 微信公众号授权登录的超详细步骤

    目录 第一步:用户同意授权,获取code 第二步:通过code换取网页授权access_token 第三步:刷新access_token(如果需要) 第四步:拉取用户信息(需scope为 snsapi_userinfo) 附:检验授权凭证(access_token)是否有效 总结 第一步:用户同意授权,获取code 在确保公众账号拥有授权作用域(scope参数)的权限的前提下,引导关注者打开如下页面: 尤其注意:如果链接的参数顺序不对,授权页面将无法正常访问 https://open.weixi

  • H5微信公众号授权的简单实现步骤

    前言 昨天因为有一个项目上面需要实现h5微信授权工作.所以花了两个小时来完成这个功能.​ ​ 开始工作前做的准备 流程说明[提前沟通过的流程] 微信授权具有时效性,一段时间内授权之后,就不需要在重复点击确认.如果卸载微信重新安装,还是需要重新确认授权的. 不管是第一次确认授权还是授权之后,都可以通过微信服务器授权回调到我们的后端接口回调. 微信授权回调之后,会返回回调回来的code&state参数,后端可以通过code获取accessToken,然后通过accessToken获取用户信息 后端在

  • 微信公众号weixin-js-sdk使用方法总结

    目录 1.安装weixin-js-sdk 2.封装wechat.js 3.main.js 4.页面调用方式 5.如果你需要用到其他功能,在这里按照这种方式接着定义新的方法: 总结 JS-SDK说明文档 网页授权说明文档 微信公众号授权登录参考方案 http接口请求封装参考方案 记录微信公众号开发过程中遇到的问题以及解决方案: 1.安装weixin-js-sdk npm install weixin-js-sdk 2.封装wechat.js import wx from 'weixin-js-sd

  • Spring Security实现微信公众号网页授权功能

    微信公众号提供了微信支付.微信优惠券.微信H5红包.微信红包封面等等促销工具来帮助我们的应用拉新保活.但是这些福利要想正确地发放到用户的手里就必须拿到用户特定的(微信应用)微信标识openid甚至是用户的微信用户信息.如果用户在微信客户端中访问我们第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑.今天就结合Spring Security来实现一下微信公众号网页授权. 环境准备 在开始之前我们需要准备好微信网页开发的环境. 微信公众号服务号 请注意,一定是微信公众号

  • 微信公众号-获取用户信息(网页授权获取)实现步骤

    根据微信公众号开发官方文档: 获取用户信息步骤如下: 1 第一步:用户同意授权,获取code 2 第二步:通过code换取网页授权access_token 3 第三步:刷新access_token(如果需要) 4 第四步:拉取用户信息(需scope为 snsapi_userinfo) 1 获取code 在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认拥有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面:

  • c# 基于Titanium爬取微信公众号历史文章列表

    github:https://github.com/justcoding121/Titanium-Web-Proxy 什么是Titanium 基于C#的跨平台异步HTTP(S)代理服务器 类似的还有: https://github.com/http-party/node-http-proxy 原理简述 对于HTTP 顾名思义,其实代理就是一个「中间人」角色,对于连接到它的客户端来说,它是服务端:对于要连接的服务端来说,它是客户端.它就负责在两端之间来回传送 HTTP 报文. 对于HTTPS 由于

  • Java 微信公众号开发相关总结

    首先必须要有一个个人微信公众号 个人微信公众号相关的接口权限有限,不过用于个人学习体验一下足够了,如图: 然后进入微信公众后台,点击基本配置,按照如下操作(点击启用,相当于设置请求url为自己后台的): 设置服务器URL.令牌.消息加解密密钥(这个可以使用自动生成的): 服务器URL至关重要,我在这里设置为我自己的域名http://www.youcongtech.com/wx-api. 这个wx-api就是后面对应的接口(比如我发送某个关键字,返回对应的信息). token可以设置复杂点. 效果

  • 微信公众号点击菜单即可打开并登录微站的实现方法

    本文实例讲述了微信公众号点击菜单即可打开并登录微站的实现方法.分享给大家供大家参考.具体分析如下: 总体来说,微信公众号点击菜单即可打开并登录微站实现步骤比较复杂,但很多微站在己用上了,本文对此进行整理归纳,相信可以给大家带来一定的参考借鉴价值. 现在大部分微站都通过用户的微信openid来实现自动登录.在我之前的开发中,用户通过点击一个菜单,公众号返回一个图文,用户点击这个图文才可以自动登录微站.但是如果你拥有高级接口,就可以实现点击菜单,打开网页就能获取这个openid,实现自动登录. 这里

随机推荐