开发微擎模块的时候 常会遇到一个问题:
只有服务号才能直接在网页上获取OpenID
,
如果是订阅号就只能从对话消息中获取OpenID
然后传到网页,
虽然微擎有个功能叫做“借用oAuth
权限”,
但是有时候连借都没地方借,怎么办呢?
还好这是个互联网时代,有需求,就会有服务。
“微信之门”就是为此而生的,转发一下他们的简介:
微信打开的网页,是无法持久存贮
cookies
的,你知道吗? 那么如何辨识唯一用户呢?
是的,使用微信服务号!服务号拥有高级接口,可以给让网站通过微信的OAuth2
授权, 获得用户的OpenID
, 从而辨别一个唯一用户。
那么,没有微信服务号呢? 这就是微信之门诞生的原因。
其它使用说明可以到微信之门官网查看。
我要写的是怎么在微擎模块中使用微信之门的接口,
在你的xxxModuleSite
类(也就是addons/xxx/site.php
文件)添加一个构造函数 代码如下:
function __construct()
{
global $_W, $_GPC;
if (empty($_W['openid'])) {
if (empty($_SESSION['openid'])) {
if ($_GPC['wgateid']) {
$_W['openid'] = $_SESSION['openid'] = $_GPC['wgateid'];
} else {
$thisUrl = urlencode('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
$gateUrl = "http://www.weixingate.com/gate.php?back=$thisUrl&force=1&info=none";
header('Location: ' . $gateUrl);
exit;
}
} else {
$_W['openid'] = $_SESSION['openid'];
}
}
}
好吧,代码一出 说什么都显得多余,
这逻辑简单到小朋友都看得懂,就不多做解释了,
事实上还可以调用一下验证接口,检查一下传回来的的wgateid
,如何有需要的话……