网站应用微信登录功能接口开发指南

news/2024/5/19 4:23:05/文章来源:https://blog.csdn.net/weixin_34200628/article/details/92712456

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

准备工作

网站应用 微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。
在进行微信OAuth2.在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的AppID和AppSecret,申请微信登录且通过审核后,可开始接入流程。

授权流程说明

微信OAuth2.0授权登录让微信用户使用微信身份安全登录第三方应用或网站,在微信用户授权登录已接入微信OAuth2.0的第三方应用后,第三方可以获取到用户的接口调用凭证(access_token),通过access_token可以进行微信开放平台授权关系接口调用,从而可实现获取微信用户基本开放信息和帮助用户实现基础开放功能等。
微信OAuth2.0授权登录目前支持authorization_code模式,适用于拥有server端的应用授权。该模式整体流程为:
1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;
2. 通过code参数加上AppID和AppSecret等,通过API换取access_token;
3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。

获取access_token时序图:

12168b9 1

第一步:请求CODE

第三方使用网站应用授权登录前请注意已获取相应网页授权作用域(scope=snsapi_login),则可以通过在PC端打开以下链接:
https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
若提示“该链接无法访问”,请检查参数是否填写错误,如redirect_uri的域名与审核时填写的授权域名不一致或scope不为snsapi_login。
csss 2
返回说明
用户允许授权后,将会重定向到redirect_uri的网址上,并且带上code和state参数
redirect_uri?code=CODE&state=STATE
若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数
redirect_uri?state=STATE
请求示例
登录一号店网站应用
https://passport.yhd.com/wechat/login.do
打开后,一号店会生成state参数,跳转到
https://open.weixin.qq.com/connect/qrconnect?appid=wxbdc5610cc59c1631&redirect_uri=https%3A%2F%2Fpassport.yhd.com%2Fwechat%2Fcallback.do&response_type=code&scope=snsapi_login&state=3d6be0a4035d839573b04816624a415e#wechat_redirect
微信用户使用微信扫描二维码并且确认登录后,PC端会跳转到
https://passport.yhd.com/wechat/callback.do?code=CODE&state=3d6be0a4035d839573b04816624a415e
为了满足网站更定制化的需求,我们还提供了第二种获取code的方式,支持网站将微信登录二维码内嵌到自己页面中,用户使用微信扫码授权后通过JS将code返回给网站。
JS微信登录主要用途:网站希望用户在网站内就能完成登录,无需跳转到微信域下登录后再返回,提升微信登录的流畅性与成功率。 网站内嵌二维码微信登录JS实现办法:
步骤1:在页面中先引入如下JS文件(支持https):

步骤2:在需要使用微信登录的地方实例以下JS对象:
var obj = new WxLogin({
id:"login_container",
appid: "",
scope: "",
redirect_uri: "",
state: "",
style: "",
href: ""
});

cs555 3

第二步:通过code获取access_token

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

cs558 4

返回说明
正确的返回:
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE"
}

cs485 5

错误返回样例:
{"errcode":40029,"errmsg":"invalid code"}
刷新access_token有效期
access_token是调用授权关系接口的调用凭证,由于access_token有效期(目前为2个小时)较短,当access_token超时后,可以使用refresh_token进行刷新,access_token刷新结果有两种:
1. 若access_token已超时,那么进行refresh_token会获取一个新的access_token,新的超时时间;
2. 若access_token未超时,那么进行refresh_token不会改变access_token,但超时时间会刷新,相当于续期access_token。
refresh_token拥有较长的有效期(30天),当refresh_token失效的后,需要用户重新授权。
请求方法
获取第一步的code后,请求以下链接进行refresh_token:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
18556 6

返回说明
正确的返回:
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE"
}
1829 7
错误返回样例:
{"errcode":40030,"errmsg":"invalid refresh_token"}

第三步:通过access_token调用接口

获取access_token后,进行接口调用,有以下前提:
1. access_token有效且未超时;
2. 微信用户已授权给第三方应用帐号相应接口作用域(scope)。
对于接口作用域(scope),能调用的接口有以下:
561615 8
其中snsapi_base属于基础接口,若应用已拥有其它scope权限,则默认拥有snsapi_base的权限。使用snsapi_base可以让移动端网页授权绕过跳转授权登录页请求用户授权的动作,直接跳转第三方网页带上授权临时票据(code),但会使得用户已授权作用域(scope)仅为snsapi_base,从而导致无法获取到需要用户授权才允许获得的数据和基础功能。
接口调用方法可查阅《微信授权关系接口调用指南》

F.A.Q

转自:http://www.xueshen.net/weixin/483/

转载于:https://my.oschina.net/weixinyingxiao/blog/374682

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_759966.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第一次担任项目经理从零开始架构自己的网站(二) 需求文档定稿,开始建表,建库(转)...

今天上午的半天时间,我们开发部一直都在和产品部门开会,扯皮。吐槽。最终砍掉了几个功能。产品的小姑娘对我说,你们第一期就做一个挂号支付的功能,后台就10几个页面,大多数是增删该查,还说22天不够用&#…

网站日志中的UserAgent分析

2019独角兽企业重金招聘Python工程师标准>>> 浏览器访问网站时,会提交UserAgent信息,里面包含操作系统/浏览器类型/渲染引擎,可以据此大致评估网站的客户端分布。特别是移动设备会在UserAgent中包含设备型号信息,所以有…

Azure Stack PaaS-网站(WebApp)背后是什么原理?

欢迎加入QQ群(423730487)!4月9日在上海有一场线下活动,盆盆还有微软Azure Stack产品组专家会和大家一起分享技术,届时会在QQ群里直播哈。添加盆盆的微信(markpah),我会把您拉到微信群。为什么要学习Azure Stack?因为这…

微网站|手机端html弹窗、弹层、提示框、加载条

layer mobile是为移动设备(手机、平板等webkit内核浏览器/webview)量身定做的弹层支撑,采用Native JavaScript编写,完全独立于PC版的layer,您需要按照场景选择使用。GitHub 官网:http://layer.layui.com/mo…

大型网站架构系列:负载均衡详解(3)

原文:大型网站架构系列:负载均衡详解(3)软件负载均衡概述Ngnix负载均衡Lvs负载均衡Haproxy负载均衡本次分享总结一、软件负载均衡概述 硬件负载均衡性能优越,功能全面,但是价格昂贵,一般适合初期或者土豪级…

网站安装打包 修改app.config[六]

在winform的安装工具中,少不免有一些配置文件要放到app.config去,于是修改也是成了一种需求! 无论是修改web.config还是app.config,普遍方式都有两种,用net自带封装的类,或是自定义xml操作。 可参考之前的一…

大型网站系统架构演化之路

一个成熟的大型网站(如淘宝、天猫、腾讯等)的系统架构并不是一开始设计时就具备完整的高性能、高可用、高伸缩等特性的,它是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架…

推荐 | 非常不错的编程学习网站

阅读文本大概需要 3.5 分钟。这周末真的精彩,前有科技圈闹得沸腾的差评,各种吃瓜群众。后有 NBA 历史绝无仅有,东西双抢 7 大战。骑士勒布朗詹姆斯,逆天改命,全场 46 分。勇士克雷-汤普森,佛祖保佑&#xf…

分享一个爬取网站的小技巧

阅读文本大概需要 2 分钟。有时候,我们很想爬取一个网站的数据。如果 PC 端的网页的反爬机制太强,我们可以换个思路。现在很多网站为了满足手机浏览器能正常访问的需求,都会推出手机版的网页。PC 端抓取数据有难度,我们可以从手机…

js通过iframe访问跨域网站,获取不到内部标签?

1.页面iframe访问跨域网站baidu html <iframe id"iframe" src"http://www.baidu.com" frameborder"0"></iframe>javascript let iframe document.getElementById(iframe)2.打印访问内容 1.查看是否可以访问document console.log…

爬虫给力技巧:robots.txt 快速抓取网站

阅读文本大概需要 5 分钟。在我抓取网站遇到瓶颈&#xff0c;想剑走偏锋去解决时&#xff0c;常常会先去看下该网站的robots.txt文件&#xff0c;有时会给你打开另一扇抓取之门。写爬虫有很多苦恼的事情&#xff0c;比如&#xff1a;1.访问频次太高被限制&#xff1b;2.如何大量…

我顺藤摸瓜端了色情网站的老窝,并劝他从良

感谢凌云给我的启发大家好&#xff0c;我是九歌前几天无意发现了一个色情网站&#xff0c;本着除暴安良的心态&#xff0c;直接开始对这个网站开始了调查这个网站的域名是.cn结尾的 【.cn是国内域名,无法隐藏注册人的信息】我去站长之家里面对这个网站进行Whois查询按照惯例这种…

hexo搭建个人博客_GitHubPage和Hexo搭建个人博客网站

title: GithubPage和Hexo搭建个人博客网站 date: 2020-02-09 12:24:45 tags: - github - Hexo categories: GithubPage前言github支持githubPage静态界面来搭建我们的个人博客&#xff0c;自己配置。创建github仓库创建http://username.github.io仓库&#xff0c;同时setting中…

vs打开sln加载失败_你的网站打开速度慢,罪魁祸首居然是它?

相信许多人都不知道&#xff0c;在营销型网站建设当中&#xff0c;著名的黄金8秒原则&#xff0c;意思就是用户点击网站后&#xff0c;大部分都只会愿意等待大约8秒的时间。如果网站不能在这个时间内打开&#xff0c;那么用户就会离开&#xff0c;故而这个时间就成为黄金8秒。而…

CentOS7基础建站指南(笔记)

由于前段时间腾讯云打折&#xff0c;所以买了一台小服务器&#xff0c;想着以后写几个小网站&#xff0c;博客什么的&#xff0c;但是一开始就遇到了难题&#xff0c;大概就是Linux服务器的配置问题&#xff0c;比如如何假设服务器&#xff0c;配置非root用户&#xff0c;配置服…

CentOS8 配置apache 搭建静态网站 踩坑向

apache服务器安装与配置apache简介apache安装挂载光盘设备系统镜像创建yum仓库配置文件安装apache服务下载使用阿里云CentOS-8.repo软件仓库修改 CentOS-Base.repo文件安装成功启动httpd同时设置为开机自启效果图踩坑经验配置服务文件参数虚拟主机功能基于IP地址部署多个网站创…

通过阿里镜像网站制作iso文件安装CentOS6.9

基于网络安装 创建kickstart文件的方式&#xff1a;   1.复制模板/root/anaconda-ks.cfg&#xff0c;而后使用vim编辑配置   2.使用system-config-kickstart来生成&#xff0c;建议使用/root/anaconda-ks.cfg 模板生成 ksvalidator&#xff1a;检查kiskstart文件的配置是否…

256模板官网站点SEO优化分析记录

一直在做SEO网站优化工作&#xff0c;网站搭建好后也没没有做过官网优化的记录&#xff0c;今天有空余时间查询一下记录网站现在的状况。通过站长工具进行分析&#xff0c;织梦模板的关键字一致很稳定&#xff0c;也没有上升的趋势&#xff0c;看来是要进行分析做一下该站点的排…

Linux下Web服务器应用之网站安全-https

Linux下Web服务器应用之网站安全(https)解决方案 HTTPS&#xff08;全称&#xff1a;Hypertext Transfer Protocol over Secure Socket Layer&#xff09;&#xff0c;是以安全为目标的HTTP通道&#xff0c;简单讲是HTTP的安全版。即HTTP下加入SSL层&#xff0c;HTTPS的安全基础…

php mysql首页下载_MySQL(PHP网站后台数据库)

MySQL是一款非常受欢迎的开源SQL数据库管理系统&#xff0c;它由MySQL AB开发、发布和支持&#xff0c;MySQL 的执行性能非常高&#xff0c;运行速度非常快&#xff0c;并非常容易使用。是一个非常捧的数据库&#xff0c;PHP 和MYSQL完美组合。非常好用。安装方法下面的是MySQL…