请问一下在微信子自定义菜单中的url链接
程序员文章站
2022-04-26 11:57:35
...
我基于原有的微信平台CMS做了一个功能,然后把功能的链接放到菜单中,通过点击菜单进入页面。但是一开始可以顺利进入,还点了几次异步上传照片,但是会显示error openid:{wechat_id}错误提示。可是后来就不行了,进不了页面,一点就是在一个空白页面显示error openid:{wechat_id},在windows的微信开发者工具又显示no token ,后来又不知道怎么老是跳成手机端首页。恳求高手帮帮忙。
回复讨论(解决方案)
这些错误提示时你们自己代码写的吧,你要把对应代码发出来
这些错误提示时你们自己代码写的吧,你要把对应代码发出来
_appid = C("appid"); $this->_secret = C("secret"); $this->time = 0; $this->token = $this->_get("token"); if (ALI_FUWU_GROUP && (date("Y") == 2015)) { $fuwuuserlist = M("fuwuuser")->where(array("token" => $this->token))->select(); foreach ($fuwuuserlist as $fuwuvo ) { $fuwuuserinfo = M("userinfo")->where(array("token" => $this->token, "wecha_id" => $fuwuvo["wecha_id"]))->find(); if ($fuwuuserinfo == "") { if ($fuwuvo["gender"] == "M") { $fuwuvo["gender"] = 1; } else if ($fuwuvo["gender"] == "F") { $fuwuvo["gender"] = 2; } else { $fuwuvo["gender"] = 0; } $add_userinfo_hb = array("token" => $this->token, "wecha_id" => $fuwuvo["wecha_id"], "issub" => 1, "portrait" => $fuwuvo["avatar"], "truename" => $fuwuvo["real_name"], "nickname" => $fuwuvo["real_name"], "wechaname" => $fuwuvo["real_name"], "sex" => $fuwuvo["gender"]); $add_userinfo_hb = array_map("nulltoblank", $add_userinfo_hb); $id_userinfo = M("userinfo")->add($add_userinfo_hb); } else { if (($fuwuuserinfo["portrait"] == "") || ($fuwuuserinfo["wechaname"] == "")) { if ($fuwuvo["gender"] == "M") { $fuwuvo["gender"] = 1; } else if ($fuwuvo["gender"] == "F") { $fuwuvo["gender"] = 2; } else { $fuwuvo["gender"] = 0; } $save_userinfo_hb = array("token" => $this->token, "wecha_id" => $fuwuvo["wecha_id"], "issub" => 1, "portrait" => $fuwuvo["avatar"], "truename" => $fuwuvo["real_name"], "nickname" => $fuwuvo["real_name"], "wechaname" => $fuwuvo["real_name"], "sex" => $fuwuvo["gender"]); $save_userinfo_hb = array_map("nulltoblank", $save_userinfo_hb); $up_userinfo = M("userinfo")->where(array("token" => $this->token, "wecha_id" => $fuwuvo["wecha_id"]))->save($save_userinfo_hb); } } } } if (strlen($this->token)) { $_SESSION["wap_token"] = $this->token; } if (!$this->token) { $this->token = $_SESSION["wap_token"]; } if (!empty($_SESSION["wap_token"])) { $this->token = $_SESSION["wap_token"]; } if (!$this->token && !strpos(MODULE_NAME, "Drp") === false) { $id = $this->_get("id"); if ($id) { $did = M("Distributor_store")->where(array("id" => $id))->getField("did"); $this->token = M("Distributor")->where(array("id" => $did))->getField("token"); } } $this->assign("token", $this->token); if (!$this->token) { exit("no token"); } if ($this->token && !preg_match("/^[0-9a-zA-Z]{3,42}$/", $this->token)) { exit("error token"); } $this->wxuser = S("wxuser_" . $this->token); if (!$this->wxuser || 1) { $this->wxuser = D("Wxuser")->where(array("token" => $this->token))->find(); S("wxuser_" . $this->token, $this->wxuser); } $this->owxuser = $this->wxuser; $this->assign("wxuser", $this->wxuser); $this->_checkVipTime($this->wxuser); $fake = 0; if (($this->wxuser["winxintype"] != 3) && $this->_appid && $this->_secret) { if ($this->wxuser["oauth"] == 1) { if (!$this->isAgent) { $this->wxuser["appid"] = trim($this->_appid); $this->wxuser["appsecret"] = trim($this->_secret); } else { $this->wxuser["appid"] = $this->thisAgent["appid"]; $this->wxuser["appsecret"] = $this->thisAgent["appsecret"]; } } $fake = 1; } $toAuth = 0; if ((C("server_topdomain") == "paiyi.net.cn") && (C("site_url") != "http://weixintest.paiyi.net.cn")) { $toAuth = 1; } else { $toAuth = $this->wxuser["oauth"]; } if ((C("server_topdomain") == "pigcms.cn") && ($this->wxuser["winxintype"] != 3)) { $this->wxuser["appid"] = $this->_appid; $this->wxuser["appsecret"] = $this->_secret; $this->wxuser["oauth"] = 0; $this->wxuser["is_domain"] = 1; $fake = 1; } $wexintype = $this->wxuser["winxintype"]; $session_openid_name = "token_openid_" . $this->token; $session_fakeopenid_name = "token_fakeopenid_" . $this->token; $session_reopenid_name = "token_reopenid_" . $this->token; $session_oauthed_name = "token_oauthed_" . $this->token; $getUserInfoModules = getUserInfoModule::index(); $getUserinfo = 0; if (isset($_GET["rget"]) || intval($_GET["ali"])) { $_SESSION["otherSource"] = 1; $toAuth = 0; $this->wxuser["oauthinfo"] = 0; } if (isset($_SESSION["otherSource"])) { $toAuth = 0; } if ($this->wxuser["oauthinfo"] && !$_SESSION[$session_oauthed_name]) { if ($_SESSION[$session_openid_name]) { $fansInfo = M("Userinfo")->where(array("token" => $this->token, "wecha_id" => $_SESSION[$session_openid_name]))->find(); if ($toAuth) { if (!$fansInfo || !$fansInfo["wechaname"] || !$fansInfo["portrait"]) { unset($_SESSION[$session_openid_name]); $getUserinfo = 1; } } } else { if (isset($_SESSION[$session_reopenid_name]) && $_SESSION[$session_reopenid_name]) { $fansInfo = M("Userinfo")->where(array("token" => $this->token, "wecha_id" => $_SESSION[$session_reopenid_name]))->find(); if (!$fansInfo || !$fansInfo["wechaname"] || !$fansInfo["portrait"]) { unset($_SESSION[$session_openid_name]); unset($_SESSION[$session_reopenid_name]); $getUserinfo = 1; } } else { $getUserinfo = 1; } } } $this->isFuwu = 0; $this->isWechat = 0; $userAgent = strtolower($_SERVER["HTTP_USER_AGENT"]); if (strpos($userAgent, "alipayclient")) { $this->isFuwu = 1; } else if (strpos($userAgent, "micromessenger")) { $this->isWechat = 1; } if (!M("Weixin_account")->where(array("type" => 1))->find()) { M("Wxuser")->where("1")->save(array("type" => 0)); } $this->cookieToSession(); if ($_GET["wecha_id"] && ($_GET["wecha_id"] != $_SESSION[$session_openid_name]) && (3 != $wexintype)) { unset($_SESSION[$session_openid_name]); unset($_SESSION[$session_oauthed_name]); cookie("oauth2_" . $this->token, NULL); } if ($this->isFuwu) { if ($_GET["wecha_id"] != "") { $this->wecha_id = $_GET["wecha_id"]; } else { $this->wecha_id = session("wecha_id"); } session("wecha_id", $this->wecha_id); $thisfuwuuser = M("fuwuuser")->where(array("token" => $this->token, "wecha_id" => $this->wecha_id))->find(); $isFuwuoauth = session("isFuwuoauth"); } if ($this->isFuwu && ($isFuwuoauth != "yes")) { $fw_wecha_id = FuwuOAuth::index($this->token); if ($fw_wecha_id != "no") { $this->wecha_id = $fw_wecha_id; session("wecha_id", $this->wecha_id); session("isFuwuoauth", "yes"); } else if ($this->wecha_id == "") { $this->error("服务窗没有获取粉丝信息权限
请在服务窗开发者中确认开通"); exit(); } $_SESSION[$session_openid_name] = $this->wecha_id; $_SESSION[$session_oauthed_name] = 1; } $users = M("Users")->where(array("id" => $this->wxuser["uid"]))->find(); if (("payReturn" == ACTION_NAME) && (0
if (empty($_SESSION[$session_openid_name]) && (0 token] = array("url" => getSelfUrl(array("wecha_id")), "token" => $this->token); $url = $users["source_domain"] . A("Home/Auth")->getCallbackUrl($users["is_syn"], "auth") . "token=" . $this->token . "&source=pigcms"; header("Location:" . $url); exit(); } if (2 == $users["is_syn"]) { $url = $users["source_domain"] . A("Home/Auth")->getCallbackUrl($users["is_syn"], "follow") . "wecha_id=" . $_SESSION[$session_openid_name]; $this->_auth = json_decode(HttpClient::getInstance()->get($url)); if (1 == $this->_auth->code) { M("Userinfo")->where(array("token" => $this->token, "wecha_id" => $_SESSION[$session_openid_name]))->setField("issub", 1); } else { M("Home")->where(array("token" => $this->token))->setField("gzhurl", $this->_auth->follow->url); $this->wxuser["qr"] = $this->_auth->follow->qrcode; $this->wxuser["wxname"] = $this->_auth->follow->wechat; } } if (!isset($_SESSION[$session_openid_name]) || !$_SESSION[$session_openid_name]) { if ($this->isFuwu) { } else { $apiOauth = new apiOauth(); if ((!$_GET["wecha_id"] || (urldecode($_GET["wecha_id"]) == "{wechat_id}")) && ($_GET["wecha_id"] != "no") && $this->wxuser["appid"] && ((($this->wxuser["type"] == 0) && ($this->wxuser["appsecret"] != "")) || ($this->wxuser["type"] == 1)) && ($toAuth == 1)) { $token_info = $apiOauth->webOauth($this->wxuser, "", $fansInfo); } if (!empty($token_info)) { $this->wecha_id = $token_info["openid"]; if (3 == $wexintype) { $fake = 0; } if ($fake) { if (isset($_SESSION[$session_fakeopenid_name])) { $datainfo["issub"] = 1; $this->wecha_id = $_SESSION[$session_fakeopenid_name]; $userinfoModel = M("Userinfo"); $userinfoData = $userinfoModel->where(array("token" => $this->token, "wecha_id" => $_SESSION[$session_fakeopenid_name]))->find(); if ($userinfoData) { $fakeUserinfoData = $userinfoModel->where(array("token" => $this->token, "wecha_id" => $token_info["openid"], "fakeopenid" => $token_info["openid"]))->find(); if ($fakeUserinfoData) { if ($userinfoModel->where(array("id" => $fakeUserinfoData["id"]))->save($this->_mergeUserinfo($userinfoData, $fakeUserinfoData))) { $userinfoModel->where(array("id" => $userinfoData["id"]))->delete(); } } else { $userinfoModel->where(array("id" => $userinfoData["id"]))->setField("fakeopenid", $token_info["openid"]); } } else { $fakeUserinfoData = $userinfoModel->where(array("token" => $this->token, "wecha_id" => $token_info["openid"], "fakeopenid" => $token_info["openid"]))->find(); if ($fakeUserinfoData) { $userinfoModel->where(array("id" => $fakeUserinfoData["id"]))->setField("wecha_id", $_SESSION[$session_fakeopenid_name]); } } $this->wecha_id = $_SESSION[$session_fakeopenid_name]; } else { $fansInfo = M("Userinfo")->where(array("token" => $this->token, "fakeopenid" => $token_info["openid"]))->find(); if ($fansInfo) { $this->wecha_id = $fansInfo["wecha_id"]; } } } if ($this->wxuser["oauthinfo"] && (MODULE_NAME != "Index")) { $jsonui = $apiOauth->get_fans_info($token_info["access_token"], $token_info["openid"]); if (isset($jsonui["openid"]) && $jsonui["openid"]) { if ($fansInfo) { $exist = $fansInfo["id"]; $issub = $fansInfo["issub"]; } else { $existInfo = M("Userinfo")->where(array("token" => $this->token, "wecha_id" => $this->wecha_id))->find(); $issub = $existInfo["issub"]; $exist = $existInfo["id"]; } $datainfo["wechaname"] = str_replace(array("'", "\\"), array(""), $jsonui["nickname"]); $datainfo["sex"] = $jsonui["sex"]; $datainfo["portrait"] = $jsonui["headimgurl"]; $datainfo["token"] = $this->token; $datainfo["wecha_id"] = $jsonui["openid"]; $datainfo["city"] = $jsonui["city"]; $datainfo["province"] = $jsonui["province"]; $datainfo["truename"] = $datainfo["wechaname"]; $datainfo["wecha_id"] = $this->wecha_id; if ($fake) { $datainfo["fakeopenid"] = $jsonui["openid"]; } if (3 == $wexintype) { $datainfo["fakeopenid"] = ""; $datainfo["issub"] = $this->_issubService($datainfo["wecha_id"]); } if ($exist) { D("Userinfo")->where(array("id" => $exist))->save($datainfo); } else { D("Userinfo")->add($datainfo); } } else { $this->error("授权不对哦,请重置您的appsecret!
" . $this->wxuser["appid"] . "
" . $this->wxuser["appsecret"] . "
" . $jsonui["errcode"], "#"); exit(); } } if (empty($this->wxuser["oauthinfo"]) && (MODULE_NAME != "Index")) { if ($fansInfo) { $exist = $fansInfo["id"]; } else { $existInfo = M("Userinfo")->where(array("token" => $this->token, "wecha_id" => $this->wecha_id))->find(); $exist = $existInfo["id"]; } $datainfo["token"] = $this->token; $datainfo["wecha_id"] = $this->wecha_id; if ($fake) { $datainfo["fakeopenid"] = $token_info["openid"]; } if (3 == $wexintype) { $datainfo["fakeopenid"] = ""; $datainfo["issub"] = $this->_issubService($datainfo["wecha_id"]); } if ($exist) { D("Userinfo")->where(array("id" => $exist))->save($datainfo); } else { D("Userinfo")->add($datainfo); } } $_SESSION[$session_openid_name] = $this->wecha_id; $_SESSION[$session_oauthed_name] = 1; cookie("oauth2_" . $this->token, array("wap_token" => $this->token, "wecha_id" => $this->wecha_id, "appid" => $this->wxuser["appid"]), 311040000); } else { $this->wecha_id = $this->_get("wecha_id"); if ($fake && $toAuth && !isset($_GET["isappinstalled"])) { $_SESSION[$session_fakeopenid_name] = $this->wecha_id; } if (!$toAuth) { $_SESSION[$session_openid_name] = $this->wecha_id; } if (isset($_GET["wecha_id"]) && strlen($_GET["wecha_id"]) && $toAuth) { $get_parms = $_GET; unset($get_parms["wecha_id"]); $get_parm_str = ""; if ($get_parms) { $comma = ""; foreach ($get_parms as $gpk => $gpv ) { $get_parm_str .= $comma . $gpk . "=" . $gpv; $comma = "&"; } } $get_parm_str .= "&g=" . GROUP_NAME . "&m=" . MODULE_NAME . "&a=" . ACTION_NAME; $_SESSION[$session_reopenid_name] = $this->wecha_id; header("Location:" . $this->siteUrl . "/index.php?" . $get_parm_str); exit(); } } } } else { $this->wecha_id = $_SESSION[$session_openid_name]; } if ($_GET["yundabao"] == 1) { cookie("yundabao", "1", 31536000); } $yundabao = cookie("yundabao"); if ($yundabao != "1") { if ($this->wecha_id && !preg_match("/^[0-9a-zA-Z_\-\s]{3,82}$/", $this->wecha_id)) { exit("error openid:" . $this->wecha_id); } }
它就是有时输出 error openid:" 这一行的东西,有时又输出 no token ,然后不知道怎么有时又跳回首页,
推荐阅读