微信之门-授权接口

时间:2015-05-29 13:48:08   收藏:0   阅读:767

微信之门-授权接口

更新说明:自定义公众号APPID功能现已上线, 通过自定义公众号的APPID, 你可以在微信之门绑定自己的服务号做OAUTH授权, 同时你将得到授权后的 openid 以及微信之门的 wgateid. 查看详细.

微信打开的网页,是无法持久存贮 cookies 的,你知道吗?
那么如何辨识唯一用户呢?

是的,使用微信服务号!服务号拥有高级接口,可以给让网站通过微信的OAuth2授权, 获得用户的 OpenID, 从而辨别一个唯一用户。
那么,没有微信服务号呢?

这就是微信之门诞生的原因。

微信之门已经被调用 42670572 次.

使用非常简单!
对于任意需要辨识唯一用户的网站,有两种方式:

 

1. 使用WgateJs

登录系统,在“网站管理”中添加您的域名,点击“生成JS”,将生成的JS,复制在页面head标签中即可。
WgateJs将会自动检测当前网站是否已获取过wgateid,如果没有,则自动使用 wgate.php api获取,并跳转回当前页面。
然后使用WgateJs.getWgateid()方法即可获取当前wgateid。详细信息请查看WgateJs
WgateJs合适静态HTML的网页(如果小游戏等) 或取获取用户 openid或者用户信息。

 

 

2. 使用gate.php接口

只需要一个页面跳转即可:

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标签中即可。
更多属性及方法列表:

示例:

  (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)

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!