超全、超简单Vue微信公众号授权登录指南

<template>
	<div id="app">
		<h1>微信授权登陆</h1>
		<div>
			<div>
				<span>手机号</span>&nbsp;&nbsp;
				<input type="number" :value="account" placeholder="请输入手机号">
			</div>
			<br>
			<div>
				<span>验证码</span>&nbsp;&nbsp;
				<input type="text" :value="smsCode" placeholder="请输入验证码" maxlength="6">
			</div>
			<br>
			<button @click="init">授权登陆</button>
			<p>{{code}}</p>
		</div>
	</div>
</template>

<script>
	/**
	 * @description
	 * 
	 * 官方网文档地址:http://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html
	 * 
	 * 网页授权步骤
	 * 
	 * 1、拼接授权地址
	 * 2、访问授权地址
	 * 3、微信回调携带 code 参数
	 * 4、code 发送给服务器获取 openId token 等信息 结束
	 * 
	 * 注意事项:
	 *  1、redirect_uri 重定向地址.
	 *	 	1)线上环境:该参数是对应线上的域名,例如:http:xxx.web.com/ 这个地址要可以访问到你的 web 项目
	 * 		2)开发环境:可能访问路径是:http://192.168.0.18:8080 但是这是内网地址,外网无法访问需要借助 内网穿透 工具
	 * 		把内网映射到外网 例如: http://n9yjxe.natappfree.cc -> 127.0.0.1:8080 我这里就可以填写 http://n9yjxe.natappfree.cc/ 这个地址
	 * 
	 * 2、微信公众号管理端配置 http://mp.weixin.qq.com/cgi-bin/settingpage?t=setting/function&action=function&token=1538596787&lang=zh_CN
	 * 		1)设置与开发->公众号设置->功能设置->网页授权域名,配置你对应的线上域名或内网穿透域名,是域名没有http://或http:// 访问路径等
	 * 		2)文件校验域名,这个步骤是微信要验证你的域名,放在域名根路径下要可以访问到 例如:http:xxx.web.com/MP_verify_JrxFeFmrqcxyTPAW.txt 即可
	 * 		3)如果是开发环境,MP_verify_JrxFeFmrqcxyTPAW 放在项目 public 开启内网穿透就可以了
	 * 3、内网穿透 http://natapp.cn/
     * 4、使用微信开发工具进行网页调试,需要把自己添加为微信公众号的开发者才可以 * */ // 微信授权登陆地址 const WX_AUTH_URL = 'http://open.weixin.qq.com/connect/oauth2/authorize?'; // 重定向参数-固定写法 const REDIRECT = '#wechat_redirect'; export default { data() { return { account: '', smsCode: '', params: { appid: 'wxca62acc6a4560ddc', // 公众号 APP ID redirect_uri: `${encodeURI('http://n9yjxe.natappfree.cc/')}`, // 授权后重定向的回调链接地址, 请使用 urlEncode 对链接进行处理 response_type: 'code', // 固定写法 scope: 'snsapi_base' // snsapi_base 静默授权获取 open id ;snsapi_userinfo 需要用户授权,获取详细信息 // state:'code', // a-zA-Z0-9的参数值,最多128字节 }, code: '', // 微信返回 code } }, created() { // 获取地址参数 const params = new URLSearchParams(location.search); this.code = params.get('code'); console.log(this.code) }, methods: { init() { // 访问地址 const access_url = WX_AUTH_URL + `${new URLSearchParams(this.params)}` + REDIRECT; // 这些需要判断没有 code 情况拉起授权登陆,有就结束放在重复拉起授权登陆 if (!this.code) { location.href = access_url; } } } } </script> <style> button { background-image: linear-gradient(219deg, #00A45A 0%, #03CE72 100%); color: #FFFFFF; width: 100%; height: 42px; box-shadow: 0rpx 8rpx 16rpx 0rpx rgba(0, 164, 90, 0.08); border-radius: 48px; font-size: 38rpx; border: none; } input { height: 29px; width: 90%; border-radius: 10px; border: 1px solid #cfcfcf; padding: 2px 13px; } </style>

 效果图

 

本文来自博客园,作者:天葬,转载请注明原文链接:http://www.cnblogs.com/bxmm/p/17264680.html

本文转载于网络 如有侵权请联系删除

相关文章

  • pytorch训练kaggle猫狗大战分类器

    preface这篇文章来写一下用pytorch训练的一个CNN分类器,数据集选用的是kaggle上的猫狗大战数据集,只有两个class,不过数据集还是挺多的,足够完成我们的分类任务。这份数据集分为train和test两个文件夹,装着训练集和测试集,还有一个sample_submission.csv用来提交我们训练的模型在测试集上的分类情况。值得注意的是,训练集是带标签的,标签在文件名中,如cat.7741.jpg,而测试集是不带标签的,因为我们模型在测试集中测试后分类的结果是要填到csv文件中提交的,所以不能拿测试集来评估模型,我们可以在训练集中划分出一个验证集来评估模型。划分数据集首先这是我们需要的所有的模块,缺少的可以用pip安装fromtorchvision.models.resnetimportresnet18 importos importrandom fromPILimportImage importtorch.utils.dataasdata importnumpyasnp importtorchvision.transformsastransforms importto

  • [2021-02-28]前端知识一个月速成经验

    最近进行了为期将近一个月的前端知识学习,目标是掌握当前业界最新的前端技能,完成一个纯前后端分离的小系统;前端使用React开发,接口层使用Node.js进行转发,服务后台是云服务。由应用开发工作转前端开发工作,边学习边开发,中间阅读了不少材料,其中有一些自己觉得挺好,而且都是免费的资源,所以整理成册,方便自己回顾,也方便有类似需求的其他人。下图的技能地图来源于网上,供进阶学习参考。近几年,前端技术栈的发展非常快,社区上有各种各样的组件、工具提供使用,编程思想也跟以前Jquery直接操作DOM的方式截然不同,代码复用的粒度也由难复用到UI组件复用再到交互行为复用。如果你看到这些变化时表示比较蒙,我觉得蛮正常的,一个月前听前端同事这样描述的时候,我也是一脸懵逼。由于涉及的知识点还有工具很多,学习曲线在起初阶段非常陡峭,我比较幸运能得到不少有丰富经验的前端同事指导,学习虽然累,但还算顺利。正因为前端技术目前还处于更新较快的阶段,所以本文中介绍的一些文章、视屏等学习素材,建议读者尽量在每年都找类似的、较新的来学习,以免走弯路。先讲讲开始学习之前需要有的背景知识:htmlcssjsHTML掌握基

  • iptables基础及Samba配置举例

    iptable基本概念Iptables表链规则iptables传输数据包的过程iptables命令格式iptables常用选项OPTIONS解释常用命令COMMANDS解释常用参数PARAMETERS解释使用MATCHEXTENSIONS扩展模块其他举例搭建samba服务器配置samba服务器添加samba账户关闭SELinux防火墙配置iptables首先查看当前的规则添加规则以启用samba所使用的端口查看添加的规则保存当前规则并启用sambaiptable基本概念iptables防火墙包含两部分,即位于用户空间的iptables模块和位于内核空间netfilter模块。用户空间模块提供插入、修改和除去包过滤表中规则,内核模块进行实际的过滤,所以更准确的名称应该是iptables/netfilter。表(tables):提供特定的功能,iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理。规则(rules):其实就是网络管理员预定义的条件。链(chains):是数据包传播的路径,每一条链其

  • Oracle数据库,8种常用Oracle数据库管理工具

    Oracle是甲骨文公司的一款关系型数据库管理系统,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。系统的可移植性好,使用方便,功能强,适用于各类大,中,小环境,是一种高效,可靠性好的,适应高吞吐量的数据库。但对于开发人员来说,一般考虑团队实际情况,选择一种第三方工具,也就是所谓的Oracle数据库管理工具。下面我们为大家讲一讲8种常用的Oracle数据库管理工具。1、Oracle自带的pl/sqlplusOracle的sql*plus是与Oracle数据库进行交互的客户端工具,可以使用sql*plus进行查看,修改数据库记录。在sql*plus中,可以运行sql*plus命令与sql语句。基于命令行;企业管理器,基于GUI/WEBUI的。2、pl/sqlDeveloperPL/SQLDeveloper是一个集成开发环境,由AllroundAutomations公司开发,专门面向Oracle数据库存储的程序单元的开发。具有语法加强、SQL和PL/SQL帮助、对象描述、代码助手、编译器提示、PL/SQL完善、代码内容、代码分级、浏览器按钮、超链接导航

  • Mac上Genymotion模拟器无法联网的问题解决方案

    最近在研究安卓相关的知识点,安卓手机有限,所以考虑在电脑上安装模拟器,于是安装来Genymotion,发现无法上网,从网上找来好多方案,都无法解决mac的问题。(怀疑搜索方式有问题)。所以我就想着自己尝试,在想到了,之前大学的知识,于是乎,尝试下,大学配置电脑上的linux的虚拟机无法访问,也是通过设置桥连接等方式。我先尝试了这种方式。由于Genymotion本身需要开启Wi-Fi,所以先开启系统的,右边栏,点击打开wifi,然后尝试上网,还是无法上网。由于需要运行在VirtualBox。我怀疑是需要这里的配置,网上也说了,但是网上的教程的确没有解决了我的问题,我就尝试了自己去选择配置。打开VirtualBox选择你要设置的虚拟机。然后选择设置,选择网络,对网卡1,网卡2进行配置。这里的还是用的主机的网网络。 然后设置网卡2 配置完毕,这个时候,你会发现,其实,模拟器还是无法上网的,于是你可能就会怀疑了,这些网上一搜都搜到的解决方案,怎么还是解决不了我的问题呢,但是你可能忘记了,mac电脑本身,可能会有很多地方需要设置,我也在查看,我打开设置。 首先,我想到的是要看网络,首先,我要确定

  • Angular里的property binding的一个例子

    如果src不加中括号,hero.url会被当成静态的字符串,传递给src属性:当然最后啥图片也不会显示出来:正确的办法:实现一个get函数,返回正确的图片url:Component模板源代码:<img[src]="myUrl"/>复制模板函数被解析并执行:elementPropertyInternalrenderer.setProperty,设置imgDOM节点的src属性,为get函数返回的图片url:最后直接给DOM节点的src属性赋值,这是HTML原生操作:

  • Python项目跨域问题解决方案

    1.可以通过settings/dev.py的ALLOWED_HOSTS,设置允许访问#设置哪些客户端可以通过地址访问到后端 ALLOWED_HOSTS=[ 'api.luffycity.cn', ]复制2.安装跨域模块(一下代码修改都是在settings.dev下进行的)pipinstalldjango-cors-headers-ihttps://pypi.douban.com/simple添加应用  INSTALLED_APPS=(   ...   'corsheaders',   ...   )复制中间件设置【必须写在第一个位置】MIDDLEWARE=[ 'corsheaders.middleware.CorsMiddleware', ... ]复制添加白名单#CORS组的配置信息 CORS_ORIGIN_WHITELIST=( 'www.luffycity.cn:8080', ) CORS_ALLOW_CREDENTIALS=False#允许ajax跨域请求时携带cookie复制以上就是本文的全部内容

  • 对DDD的第一次解

    软件架构的终极目标:最大化程序员的生产力,最小化运营的总成本。 前奏目前我在看两本书《领域驱动设计精粹》和《实现领域驱动设计》,前一本比较薄,不到150页,后一本就非常厚实了,有500多页,那么读起来可能就会显得有点心理障碍,但如果要想更多了解DDD,还是要以第二本为主,第一本可以作为概要性阅读。领域驱动设计,类似**驱动,我们也接触过不少,比如测试驱动,敏捷驱动等等。领域驱动设计,这六个字或者在前面再加上业务两字,业务领域驱动设计,最终的目标都是为了设计服务的,那么设计是设计的什么,肯定是应用程序系统架构,那么应用程序系统的架构有什么样的需求呢。架构有两种需求:功能性需求和非功能性需求。功能性需求就是我们在使用一个系统的时候所接触到的,所用到的诸多功能,比如发布一个商品,展示一个统计报表,做权限的管理和控制等,代表的是一个应用程序系统架构能做什么。非功能性需求是我们的这个应用程序系统架构是否做到了可监控、可扩展、是否高可用、高性能等,代表的是一个应用程序在运行时的质量。非功能性需求中,还有一个非常重要的点就是:快速安全的交付软件。那么我们就随着如何快速安全的交付软件说起。DDD重要的

  • 给库加上酷炫的小徽章 & ava、codecov、travis 示例

    GitHub很多开源库都会有几个酷炫的小徽章,比如:这些是怎么加上去的呢? Shields.io首先这些徽章可以直接去shields.io网站自动生成。比如:npm@latestv0.3.2 就是version这一类里的一种图标,选择npm一栏填入包名,然后复制成Markdown内容,就会得到诸如:![npm(tag)](https://img.shields.io/npm/v/io-memcached/latest)复制直接粘贴在.md文件中就可以使用了,最后展现的就是这个图标。当然还有其他很多徽章都任由你挑选,不过某些徽章是需要额外进行一些配置,比如这里的buildpassing(自动构建通过)和coverage72%(测试覆盖率)。AVA谈到测试覆盖率必须先有单元测试,本文使用ava作为示例,ava是一个js测试库,强烈推荐你使用它。1、安装npminitava复制2、使用示例编写test.js文件:importtestfrom'ava' importMemcachedfrom'../lib/memcached'; test.befor

  • 开发者必备十大学习网站

    来自CSDN:https://blog.csdn.net/qq_43652793/article/details/83962086作为开发者来说,必备的除了对编码的热情还要有自己的一套技巧,另外不可缺少的就是平时学习的网站。今天给大家推荐几个学习编程的优秀网站,平时呢也是小编经常逛的地方,这些网站可以提供学习信息、还能解答、面试问题等。1.StackoverflowStackoverflow.com可能是编程界中最流行的网站了,是一个与程序相关的IT技术问答网站,用户可以在网站免费提交问题,浏览问题,索引相关内容,在创建主页的时候使用简单的HTML。一部分的程序员学习API或者编程语言,通常依赖于代码示例,stackoverflow就可以提供大量的代码片段。 Stackoverflow的另一个优点在于它的社交性。你可以在一些特定的标签下查看问题,比如“Java”、“regex”,你就会看到哪些是高频问题。这对于学习,以及Java博主书写热门话题都是一种非常好的资源。2.DZone这是一个非常有趣的网站,有相当多的开发者在这个网站上分享他们博客文章。就像一场冒险一样,在这里,你永远不知道

  • SparkStreaming读Kafka数据写HBase

    温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。Fayson的github: https://github.com/fayson/cdhproject提示:代码块部分可以左右滑动查看噢1.文档编写目的在前面的文章Fayson介绍过《如何使用SparkStreaming读取HBase的数据并写入到HDFS》,关于SparkStreaming的应用场景很多,本篇文章Fayson主要介绍使用Scala语言开发一个SparkStreaming应用读取Kafka数据并写入HBase。本文的数据流图如下:内容概述1.环境准备2.编写SparkSteaming代码读取Kafka数据并写入HBase3.流程测试4.总结测试环境1.CM和CDH版本为5.12.12.采用root用户操作前置条件1.集群已安装Kafka2.环境准备1.编写向Kafka生成数据的ReadUserInfoFIleToKafka.java代码,具体内容可以在Fayson的GitHub上查看https://github.com/fayson/cdhproject/blob/master/kafkademo/src/m

  • 教程 | Python代码优化指南:从环境设置到内存分析(一)

    选自pythonfiles.wordpress机器之心编译参与:Panda、蒋思源近日,PythonFiles博客发布了几篇主题为「HuntingPerformanceinPythonCode」的系列文章,对提升Python代码的性能的方法进行了介绍。在其中的每一篇文章中,作者都会介绍几种可用于Python代码的工具和分析器,以及它们可以如何帮助你更好地在前端(Python脚本)和/或后端(Python解释器)中找到瓶颈。机器之心对这个系列文章进行了整理编辑,将其融合成了这一篇深度长文。本文的相关代码都已经发布在GitHub上。代码地址:https://github.com/apatrascu/hunting-python-performance目录一、环境设置二、内存分析三、CPU分析——Python脚本四、CPU分析——Python解释器本文是该教程的第一部分,主要从环境设置和内存分析两个方面探讨Python代码优化的路径。一、环境设置设置在深入到基准测试和性能分析之前,首先我们需要一个合适的环境。这意味着我们需要为这项任务配置我们的机器和操作系统。我的机器的规格如下:处理器:In

  • 深度学习中的基础线代知识-初学者指南

    导语:在经过一天之后,我们的活动人数已经达到40人了,感谢大家对小编的支持,同时在本文末附上前一天的众筹榜单。希望能跟小伙伴们度过愉快的6天!上过JeremyHoward的深度学习课程后,我意识到我在线性代数方面的不足,而这大大影响我对类似反向传播这样的概念的理解。因此我决定在这个方面花点时间,以补全这方面的知识。本文是对线性代数的基本介绍,用于深度学习中会使用到的一些常见的线性代数操作。什么是线性代数?在深度学习的背景下,线性代数是一个数学工具,它提供了有助于同时操作数组的技术。它提供了像向量和矩阵(电子表格)这样的数据结构用来保存数字和规则,以便进行加,减,乘,除的运算。线性代数为什么有用?线性代数可以将复杂的问题简单化,让我们能够对问题进行高效的数学运算。以下是线性代数如何达到这些目标的一个例子。 #Multiplytwoarraysx=[1,2,3] y=[2,3,4] product=[] foriinrange(len(x)): product.append(x[i]*y[i])#Linearalgebraversionx=numpy.array([1,2,3]) y=nu

  • OAuth2.0 原理流程及其单点登录和权限控制

    单点登录是多域名企业站点流行的登录方式。本文以现实生活场景辅助理解,力争彻底理清OAuth2.0实现单点登录的原理流程。同时总结了权限控制的实现方案,及其在微服务架构中的应用。1什么是单点登录1.1多点登录传统的多点登录系统中,每个站点都实现了本站专用的帐号数据库和登录模块。各站点的登录状态相互不认可,各站点需要逐一手工登录。如下图,有两个术语含义如下:认证(authentication):验证用户的身份;授权(authorization):验证用户的访问权限。1.2单点登录 单点登录,英文是SingleSignOn,缩写为SSO。多个站点(192.168.1.20X)共用一台认证授权服务器(192.168.1.110,用户数据库和认证授权模块共用)。用户经由其中任何一个站点(比如192.168.1.201)登录后,可以免登录访问其他所有站点。而且,各站点间可以通过该登录状态直接交互。2OAuth2认证授权的原理流程 2.1生活实例【★★重点★★】为了直观的理解OAuth2.0原理流程,我们假设这样一个生活场景:(1)档案局A(客户端/Client):以“档案局ID/密码”标识,是掌握

  • springmvc restful风格操作

    ssm框架 controller: packagecom.sgcc.controller; importjava.util.ArrayList; importjava.util.List; importorg.omg.CORBA.PUBLIC_MEMBER; importorg.springframework.stereotype.Controller; importorg.springframework.ui.ModelMap; importorg.springframework.web.bind.annotation.PathVariable; importorg.springframework.web.bind.annotation.RequestMapping; importcom.sgcc.entity.User; @Controller @RequestMapping("/user")//窄化--分模块开发,团队协作--注意页面跳转加/或视图解析器 publicclassUserController{ privateList<User>list=new

  • 链表Linked List注意事项

    Q:在扫整个链表的时候,到底什么时候用while(cur!=null) 什么时候用 while(cur.next!=null) 呢? 以[leetcode]83.RemoveDuplicatesfromSortedList有序链表去重(有重去重)和[leetcode]82.RemoveDuplicatesfromSortedListII有序链表去重(有重删光)为例 以链表1->1->null为例 1.如果题意要求有重去重,那么需要保留去重之后的该元素cur,故cur.next==null时停下,因为cur必须被保留 2.如果题意要求有重删光,那么需要删光有重的该元素cur,  故cur==null时停下,因为cur必须被删掉   Q:什么时候要用  ListNodedummy=newListNode(-1)?  只要涉及对给定链表ListNodehead的操作(包括删除、移动等等),都应该预先用dummy把给定链表ListNodehead勾搭起来,防止在后续操作中,ListNode

  • 牛客月赛 G-many sum(筛因子)

    manysum 链接:https://ac.nowcoder.com/acm/contest/879/G来源:牛客网 时间限制:C/C++1秒,其他语言2秒 空间限制:C/C++524288K,其他语言1048576K 64bitIOFormat:%lld 题目描述 输入描述: 第一行三个整数N,A1,M复制 输出描述: 第一行一个整数,表示答案。复制 示例1 输入 复制 1010313复制 输出 复制 441复制 备注: 1≤N≤2×10^6,0≤A1,M<10^4通过此题的同学,不妨来想一些如果N=2×107的时候该怎么做呢?d|i为“d整除i”或“i被d整除”,可看作i%d==0,也就是需要找i所有的因子。筛因子法利用逆向思维,枚举因子的倍数反向加入到i中。一开始存表预处理1~n因子T了,这里找到直接加入Bi即可,一步到位。复制 #include<bits/stdc++.h> usingnamespacestd; typedeflonglongll; inta[2000005],b[2000005

  • 网页上的JS call Unity3d里的function——SendMessage

    注意: sendmessage只可以从网页发信息到unity游戏里,但是没有返回值 只可以发布三种类型的data,不可以其他复杂的强类型 发信息的时不会做编译检测   SendMessageWorkflow ImplementUnityObject2.js varu=newUnityObject2; u.GetUnity(); sendmessage(): 注意:sendmessage是blockingcall,callsendMessage在Mono里的一个function是一个死循环会blockbroswer,所以这些要被call到的methord里我们可以使用Coroutine,来splitup一些logicacrossframe  

  • DOSBox debug可执行程序

    微机原理实验课的要求debug可执行程序,然而我的win10x64系统没有debug,通过百度安装了DOSBox,终于能debug。但是我当时却不知道怎么debug我写的.exe程序(实验室的电脑是win7系统,按win键输入“debug程序路径”就直接运行了),再用同样的操作总是提示错误。。。 然后我憨憨的安装了win7虚拟机。。。 今天才发现 woc,这意思就是此时的D盘实际上是我的软件目录(恍然大悟),把我的程序放到软件目录不就行了 完美解决 百度上还有很多其他方法,自己搜 还没有过四级的我流下了悔恨的泪 likeqc ends

  • 属性驱动和模型驱动 [问]

    属性驱动不需要继承或实现;模型驱动需要实现ModelDriven接口 属性驱动需要为成员字段提供get/set访问器;模型驱动只需要提供get访问器 属性驱动下,Action中的属性不需要进行初始化;模型驱动下Action中的属性必须进行初始化 使用属性驱动时,Jsp中必须通过对象名对其中成员进行调用;模型驱动时,Jsp中可以直接对对象中的成员进行访问 每接触一个新领域,我就像一块掉进水里的海绵,四面八方的养分都让我不断充实。O(∩_∩)O~

  • [CF1202B] You Are Given a Decimal String(最短路)

    Description 今天突然想来发一篇博客防死 [Portal][https://vjudge.net/problem/2650668/origin] 定义被x-y生成器生成的序列为,一开始有一个数字S=0,每次输出S%10,然后把这个数字加上x或y. 现在给你一个串,对于$0\leqx,y\leq9$要你计算至少要在串中插入几个数位才能将其变成正确的x-y生成器生成的串 字符串长度\(\leq2e6\) Solution 这种数字之间跳来跳去的直接考虑最短路. 从\(i\)向\((i+x)\mod10\),连一条边权为1的单向边. 从\(i\)向\((i+y)\mod10\),连一条边权为1的单向边. \(dis[i][i]=inf\) 直接跑floyd即可,那么答案就是数字之间的距离-1的和. Code #include<bits/stdc++.h> usingnamespacestd; #definerep(i,a,b)for(inti=(a),i##_end_=(b);i<=i##_end_;++i) #definedrep(i,a,b)for(inti=

相关推荐

推荐阅读