网站第三方登录--微信登录(填坑)
2016-05-22 09:51
585 查看
按照官方给出的流程进行开发是可以顺利进行授权等操作的。
但我要说明一下 我开发的项目中 由于网站不是https协议的 所以在微信的授权通过官方给于的js实现二维码显示时遇到以下问题:
第一个问题:
官方步骤
步骤1:在页面中先引入如下JS文件(支持https):
<script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
步骤2:在需要使用微信登录的地方实例以下JS对象:
var obj = new WxLogin({
id:"login_container",
appid: "",
scope: "",
redirect_uri: "",
state: "",
style: "",
href: ""});
参数说明:
id 是 第三方页面显示二维码的容器id
appid 是 应用唯一标识,在微信开放平台提交应用审核通过后获得
scope 是 应用授权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写snsapi_login即可
redirect_uri 是 重定向地址,需要进行UrlEncode
state 否 用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验
style 否 提供"black"、"white"可选,默认为黑色文字描述。详见文档底部FAQ
href 否 自定义样式链接,第三方可根据实际需求覆盖默认样式。详见文档底部FAQ
问题来了 href其实只支持https协议的连接, 而http协议的连接是无法支持的,因为该接口调用的是微信的https协议获取的二维码,在https中调用http是被认为不安全的。
第二个问题:
在使用了第一种弹出新页面后授权后 刷新的父级页面,这里如果需要用到session得话 就要注意域的有效性了。
但我要说明一下 我开发的项目中 由于网站不是https协议的 所以在微信的授权通过官方给于的js实现二维码显示时遇到以下问题:
第一个问题:
官方步骤
步骤1:在页面中先引入如下JS文件(支持https):
<script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
步骤2:在需要使用微信登录的地方实例以下JS对象:
var obj = new WxLogin({
id:"login_container",
appid: "",
scope: "",
redirect_uri: "",
state: "",
style: "",
href: ""});
参数说明:
id 是 第三方页面显示二维码的容器id
appid 是 应用唯一标识,在微信开放平台提交应用审核通过后获得
scope 是 应用授权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写snsapi_login即可
redirect_uri 是 重定向地址,需要进行UrlEncode
state 否 用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验
style 否 提供"black"、"white"可选,默认为黑色文字描述。详见文档底部FAQ
href 否 自定义样式链接,第三方可根据实际需求覆盖默认样式。详见文档底部FAQ
问题来了 href其实只支持https协议的连接, 而http协议的连接是无法支持的,因为该接口调用的是微信的https协议获取的二维码,在https中调用http是被认为不安全的。
第二个问题:
在使用了第一种弹出新页面后授权后 刷新的父级页面,这里如果需要用到session得话 就要注意域的有效性了。
相关文章推荐
- aps - (Advanced Planning And Scheduling) 高级生产计划排程软件的架构和设计
- 网站页面来源都是直接输入网址或书签是怎么回事?
- 学生管理系统---三层架构
- MESOS集群高可用部署
- 第11课:Spark Streaming源码解读之Driver中的ReceiverTracker架构
- Android群英传学习-第三章:控件架构与自定义控件详解
- 整理的网站
- 学习的网站(当前是别人整理的)
- 15年资深架构师总结的7条经验
- Flume(NG)架构设计要点及配置实践
- w3schools网站的HTML教程之HTML基础
- windows7 安装PHP7 本地网站搭建
- infini-band 服务器高速联网和SSD将架构认知推进到新阶段
- 高可用,和负载均衡的简单理解
- 学习网站记录
- 学生管理系统(三层架构)
- Java线程池架构2-多线程调度器(ScheduledThreadPoolExecutor)
- C#做网站公共方法(20160521)
- 数据密集型系统架构设计
- flume的级别的架构使用--实际场景应用--可以用于分布式的服务形式的日志采集