另外需要注意的是,如果开发者需要在多个公众号之间,或者公众号与移动应用之间统一用户账号,需要先去微信开放平台()绑定公众号,才可以使用该机制满足上述要求。文档:
微信网页第三方登录原理
微信开放平台与公众平台的区别
1、公众平台面向的是普通用户,比如自媒体、媒体人、企业官方微信公众号运营者等。当然如果你的团队或者公司有能力开发一些内容,也可以调用公众平台里的接口,比如自定义菜单、自动回复、查询功能等。目前大部分微信账号在通过认证后都是这么做的。
2、开放平台是面向开发者和第三方独立软件开发者的。我觉得开发平台最大的开放就是微信登录。腾讯当时并没有花太多精力在统一登录上,导致现在每个网站都要有一个登录机制。好在他们现在已经认识到这个情况了。开发者或者软件开发商可以通过微信提供的平台和接口,开发出适合企业的电商网站,扫描二维码进入一个游戏界面,然后去购买商品等等。当然后续的开放平台会开放支付接口,所以像口袋通这样的软件开发商可以为大中小型企业提供微信小店等服务和软件。
公众平台是服务号、订阅号的管理和开发后台。
简单来说,开发平台可以让安装在手机里的软件内容,一键分享到朋友圈;
以下第三方登录基于开放平台的功能()
准备
网站应用微信登录是基于.0协议标准构建的微信.0授权登录系统。
在进行.0授权登录接入之前,你必须在微信开放平台注册一个开发者账号,拥有一个审核通过的网站应用,并获得相应的资质,申请微信登录并通过审核,即可开始接入流程。
授权流程说明
.0授权登录允许微信用户使用微信身份安全登录第三方应用或网站。微信用户授权已接入.0的第三方应用登录后,第三方可获取用户的接口调用凭证(),并可调用微信开放平台授权关系接口,从而获取微信用户的基本开放信息,帮助用户实现基本开放功能。
.0授权登录目前支持模式,适用于车主侧应用授权,该模式整体流程为:
1、第三方发起微信授权登录请求,微信用户授权第三方应用后,微信会带着授权临时票号参数拉起应用或者跳转到第三方网站;
2、增加code参数,通过API进行交换;
3、获取用户基础数据资源或通过接口调用帮助用户进行基本操作。
获取时序图:
步骤 1:请求代码
第三方使用网站应用授权登录前请注意已获取相应网页授权范围(=),您可以在PC上打开以下链接:
若提示“无法访问链接”,请检查参数填写是否正确,如域名与审核时填写的授权域名不一致或者不正确。
参数描述 是否必须描述该参数
是的
应用程序唯一标识符
是的
重定向地址,需要
是的
填写代码
是的
应用授权范围,多个范围以逗号(,)分隔,Web应用只需填写一个范围。
不
用于保存请求和回调的状态,在请求被授权后原样返回给第三方,此参数可以用于防止CSRF攻击(跨站请求伪造攻击),建议第三方带上此参数,可以设置为简单的随机数进行验证。
返回描述
用户允许授权后,URL将会带着代码和参数进行重定向。
?代码=代码&=
如果用户禁止授权,重定向后将不包含code参数,只包含参数
=
请求示例
登录1号店网站应用程序
开启后1号店会生成参数,跳转到
微信用户使用微信扫描二维码并确认登录后,PC端将跳转至
为了满足网站更加定制化的需求,我们还提供了第二种获取code的方式,支持网站将微信登录二维码嵌入到自己的页面中,用户使用微信扫描二维码授权后,通过JS将code返回给网站。
JS微信登录的主要目的:网站希望用户可以在网站内完成登录,而不用跳转到微信域登录再返回,提高微信登录的流畅度和成功率。网站内嵌二维码微信登录JS实现方法:
步骤1:在页面中导入如下JS文件(支持): 步骤2:在需要微信登录的地方实例化如下JS对象:
var obj = new ({
ID:””,
: "",
: "",
: "",
: "",
: "",
网址: 1
});
参数描述 是否必须描述该参数
ID
是的
第三方页面展示的二维码容器ID
是的
应用提交至微信开放平台并审核通过后,获得该应用的唯一ID。
是的
应用授权范围,多个范围以逗号(,)分隔,Web应用只需填写一个范围。
是的
重定向地址,需要
不
用于保存请求和回调的状态,在请求被授权后原样返回给第三方,此参数可以用于防止CSRF攻击(跨站请求伪造攻击),建议第三方带上此参数,可以设置为简单的随机数进行验证。
不
提供“”和“”作为选项,默认为黑色文字描述。详情请参阅文档底部的FAQ
頁面
不
自定义样式链接,第三方可根据实际需要覆盖默认样式,详情见文档底部FAQ
第二步:通过代码获取
通过代码获取
参数描述 是否必须描述该参数
是的
应用提交至微信开放平台并审核通过后,获得该应用的唯一ID。
是的
申请密钥,申请提交至微信开放平台审核通过后获得
代码
是的
填写第一步获取到的code参数
是的
充满
返回描述
正确返回:
":"",
“”:7200,
":"",
":"",
"":"",":""}
参数说明
接口调用凭证
接口调用凭证超时时间,单位(秒)
用户刷新
授权用户唯一标识符
用户授权范围,以逗号(,)分隔
用户将公众号与微信开放平台账号绑定后,才会出现该字段。
错误返回示例:
{““:,““:“ 代码”}
刷新有效期
是调用授权关系接口的调用凭证,由于有效期较短(目前为2小时),超时后可以刷新,刷新结果有两种:
1、如果已经超时,则获取新的超时时间;
2、如果没有超时,则不会改变进度,但是会刷新超时时间,相当于续订。
它的有效期较长(30天),到期后用户需要重新授权。
请求方法
获取第一步的代码后,请求以下链接:
参数描述 是否必须描述该参数
是的
应用程序唯一标识符
是的
充满
是的
填写获取到的参数
返回描述
正确返回:
":"",
“”:7200,
":"",
":"",
“”:””
参数说明
接口调用凭证
接口调用凭证超时时间,单位(秒)
用户刷新
授权用户唯一标识符
用户授权范围,以逗号(,)分隔
错误返回示例:
{"":,":" "}
注意:
1、是应用接口使用的密钥,一旦泄露可能导致应用数据泄露、应用用户数据泄露等高危后果,存储在客户端,极有可能被恶意窃取(如反编译);
2、用户授权第三方应用发起接口调用的凭证(相当于用户登录态)保存在客户端,被恶意获取后可能导致用户数据泄露,用户微信相关接口功能被恶意发起;
3、用户授权第三方应用的长期凭证,虽然只是用于刷新,但如果泄露,则相当于泄密,风险同上。
建议将用户数据(如)放在App云服务器,并有云端转接口调用请求。
步骤3:通过调用接口
获取之后接口调用有以下前提条件:
1. 有效且未过期;
2、微信用户已经授权第三方应用帐号对应的接口范围()。
对于 ()来说,可以调用的接口如下:
()接口接口说明
/sns//
通过代码兑换,并授权
/sns//
刷新或续订
/sns/身份验证
检查有效性
/sns/
获取用户个人信息
它是一个基础接口,如果应用有其他权限,则会是默认权限,使用它可以让手机网页授权绕过跳转授权登录页请求用户授权的动作,直接用临时的授权(code)跳转到第三方网页,但是会让用户的授权范围()变得有限,导致无法获取需要用户授权的数据和基本功能。
接口调用方法请参考微信授权关系接口调用指南。
常见问题 1.什么是授权临时票(代码)?
A:第三方获取code时需要,code超时时间为10分钟,一个code只能成功兑换一次,之后失效。code的临时性保证了微信授权登录的安全性。第三方可以通过和参数进一步增强自身授权登录的安全性。
2. 授权范围是什么?
答:授权范围()代表用户授权给第三方的接口权限。第三方应用需要先向微信开放平台申请相应的权限,然后使用文档中描述的方法让用户授权。用户授权并获取相应权限后,方可调用接口。
3.网站内嵌二维码时微信登录的JS代码中各字段起什么作用?
A:第三方页面颜色样式可能为浅色或深色,若第三方页面为浅色背景,则该字段需提供“”值(也可不提供,为默认值),对应微信登录文字样式为黑色,相关效果如下:
如果传入值为“”,则对应的文字描述会以白色显示,适合深色背景,相关效果如下:
4、网站内嵌二维码时微信登录的JS代码中的href字段起什么作用?
A:如果第三方觉得微信团队提供的默认样式和自己的页面样式不匹配,可以提供自己的样式文件覆盖默认样式。比如第三方觉得默认二维码过大,可以提供相关CSS样式文件,在href字段填写链接地址即可。
{: ;}
。 。 {: 没有任何;}
. .信息 {: ;}
。 {:没有任何}
。 。 {文本-: ;}
相关效果如下:
通过代码获取接口描述
通过代码获取的接口。
请示