标签:
微信打开的网页,是无法持久存贮 cookies 的,你知道吗?
那么如何辨识唯一用户呢?
是的,使用微信服务号!服务号拥有高级接口,可以给让网站通过微信的OAuth2授权, 获得用户的 OpenID, 从而辨别一个唯一用户。
那么,没有微信服务号呢?
这就是微信之门诞生的原因。
微信之门已经被调用 42670572 次.
使用非常简单!
对于任意需要辨识唯一用户的网站,有两种方式:
登录系统,在“网站管理”中添加您的域名,点击“生成JS”,将生成的JS,复制在页面head标签中即可。
WgateJs将会自动检测当前网站是否已获取过wgateid,如果没有,则自动使用 wgate.php api获取,并跳转回当前页面。
然后使用WgateJs.getWgateid()方法即可获取当前wgateid。详细信息请查看WgateJs
WgateJs合适静态HTML的网页(如果小游戏等) 或取获取用户 openid或者用户信息。
只需要一个页面跳转即可:
http://www.weixingate.com/gate.php?back=url&force=1
http://www.weixingate.com/#custom_appkey
更新说明:自定义公众号APPID功能现已上线, 通过自定义公众号的APPID, 你可以在微信之门绑定自己的服务号做OAUTH授权, 同时你将得到授权后的 openid 以及微信之门的
参数说明:
注意: info值为 basic,force 时,为控制潜在的风险,需要绑定该域名的用户验证用户手机号,以加强安全性。请到"用户中心->设置用户"中操作。未验证手机号,将会有每天100次的限制。超限的请求会默认使用none作为info的值。
微信之门会通过微信授权, 拿到用户的 openid, 并转换为 wgateid 作为参数跳转回指定的URL.
返回参数:
注意: 使用微信之门的接口, 请先注册用户, 并且在"网站管理" 中添加域名(可以查看实时请求流量哦). 未添加的域名, 将会有每天最多100次的请求限制.
验证接口:
http://www.weixingate.com/verify.php?wgateid=用户wgateid&verify=校验码
验证接口用于验证gate.php接口是否真正来自微信之门。返回值为字符串 "true" 或者 "false".
获取用户信息接口:
http://www.weixingate.com/wgate_user.php?wgateid=用户wgateid
参数说明:
对于wgate接口中info参数使用了显示授权方式(basic或者force)的wgateid,
可以通过此接口获取用户的信息(昵称,性别,位置等),返回数据为JSON格式。
如需JSONP,请添加jsonp_callback参数,使用方法同verify接口。
如果该用户ID在系统中不存在,会返回"null"。
新增: 对于JS调用JSONP方式, 可以不传递wgateid, 直接调用该接口, 会返回当前用户的wgateid或者用户信息(gate.php接口info参数为basic|force时).
如果你只希望在页面的JS代码中获取wgateid,可以使用WgateJs。
它可以帮助您做以下几件事情:
如要使用WgateJs,请在用户中心“站点管理”中添加您网站的域名,然后点击“生成JS”,再将生成后的JS放在需要获取wgateid的页面head标签中即可。
更多属性及方法列表:
获取不到 wgateid 时,自动使用gate.php接口。可选值: true||false
使用 gate.php 授权时的参数,例如:WgateJs.gate_options={force:1}
当WgateJs准备就绪时执行的回调方法。例如:WgateJs.ready=function(){...}
获取当前wgateid的方法。如果获取不到,则返回null。
获取当前用户信息。通过callback回调返回。例如:WgateJs.getWgateUser(function(user){...})。
注意:该方法实际使用了wgate_user.php接口,所以需要设置WgateJs.gate_options中{info:"basic"}或者{info:"force"}。
示例:
(function() { WgateJs = {}; WgateJs.auto_auth=true; WgateJs.gate_options={force:1,info:"basic"}; WgateJs.ready=function(){ var wgateid=WgateJs.getWgateid(); WgateJs.getWgateUser(function(user){console.info(user)}); } var u=(("https:" == document.location.protocol) ? "https" : "http") + "://st.weixingate.com/"; u=u+‘st/10‘;//注意每个site这里的数字不一样 var d=document, g=d.createElement(‘script‘), s=d.getElementsByTagName(‘script‘)[0]; g.type=‘text/javascript‘; g.defer=true; g.async=true; g.src=u; s.parentNode.insertBefore(g,s); })();
使用了微信之门后, 你可能会有几个新的需求:
自定义公众号APPID的功能 可以帮助你实现这些功能.
通过自定义的APPID(使用你自己的认证服务号), 你可以使用微信之门的接口, 同时获取一个微信用户针对你自定义APPID的openid, 以及微信之门的 wgateid.
接口返回的参数中, wxopenid 就是自定义APPID产生的 openid, wgateid 也会同时返回.
微信中debug比较麻烦, 只能在微信中刷新. 对于使用WgateJs的用户, 可以使用alert, JSON.stringify(json) 等方法打印变量.
WgateJs会使用cookie 作为wgateid的临时存贮, 如遇到"不弹出授权页面"等问题, 可尝试在微信中访问: http://www.weixingate.com/clear_cookie.php 清除cookie, 再测试.
或者扫描二维码使用DEBUG工具:
例如:
http://www.weixingate.com/gate.php?back=http%3A%2F%2Fwww.baidu.com 授权后将会跳转到: http://www.baidu.com?wgateid=用户wgateid&verify=校验码
一个典型的应用场景示例:缘分测试 (使用微信扫描打开)
(欢迎将您的案例展示在这里,地址请发送到页面的联系邮箱)
微信之门的设计非常简单, 它能做什么? 不能做什么?
综上所述, 微信之门适合需要唯一用户身份辨识需求 不需要依赖微信公众号的网站..
如果您有什么想法和建议或者意见,欢迎通过下边的联系方式提供给我们,一起来完善它以提供更方便的服务。
如有疑问, 请联系 cnhuye@gmail.com
微信方面的讨论 请加群 98749981(验证问题,请填写完整的微信接口的域名: api.weixin.qq.com)
标签:
原文地址:http://www.cnblogs.com/lykbk/p/bgfhfhs353453534534534.html