Heim > Artikel > Backend-Entwicklung > So verwenden Sie das Thinkphp5 WeChat-Applet, um eine Benutzerinformationsschnittstelle zu erhalten
In diesem Artikel werden hauptsächlich relevante Informationen zur detaillierten Erläuterung der Benutzeroberfläche des Thinkphp5 WeChat-Applets vorgestellt. Ich hoffe, dass dieser Artikel allen bedürftigen Freunden helfen kann.
Thinkphp5 WeChat Applet Detaillierte Erläuterung des Beispiels der Benutzerinformationsschnittstelle des Programms
Laden Sie zuerst den Beispielcode von der offiziellen Website herunter, wählen Sie PHP,
Hier gibt es eine Grube
Die offizielle PHP-Datei ist in UTF-8+ codiert, daher müssen Sie die Datei in UTF-8 ändern
und dann den Wxxcx-Namespace im Thinkphp5-Extend-Ordner erstellen und mehrere einfügen offizielle Klassendateien darin (Hier sollten Sie auf den Ordnernamen, den Namespace-Namen und den Klassennamen achten und die Groß-/Kleinschreibung muss identisch sein. Der offizielle Dateiname und der Klassenname haben unterschiedliche Groß-/Kleinschreibung)
Dann Ihre eigene thinkphp-Schnittstellencode:
<?php /** * Created by PhpStorm. * User: leeoo * Date: 2017/9/14 0014 * Time: 10:43 */ namespace app\api\controller\v1; use think\Loader; use think\Request; use Workerman\Protocols\Http; use Wxxcx\WXBizDataCrypt; use first\second\Foo; class Index { public function index($id) { return json(['msg' => $id]); } public function dologin() { $code = Request::instance()->param('code'); $encryptedData = Request::instance()->param('encryptedData'); $iv = Request::instance()->param('iv'); $appid = "你的小程序appid"; $secret = "你的小程序secret"; //appid={$appid}&secret={$secret}&js_code={$code}&grant_type=authorization_code $param = array( 'appid' => $appid, 'secret' => $secret, 'js_code' => $code, 'grant_type' => 'authorization_code' ); //http函数为封装的请求函数 $res = http("https://api.weixin.qq.com/sns/jscode2session", $param, 'post'); $arr = json_decode($res, true); $result = $this->wxdecode($encryptedData, $iv, $arr['session_key'], $appid); //return json($result); if ($result) { return json(['code' => 1]); } else { return json(['code' => -1]); } } public function wxdecode($encryptedData, $iv, $sessionKey, $appid) { //Loader::import('Wxxcx\WXBizDataCrypt', EXTEND_PATH); $pc = new WXBizDataCrypt($appid, $sessionKey); $data = null; $errCode = $pc->decryptData($encryptedData, $iv, $data); //echo $data; //return json(['data'=>$data]); $data = json_decode($data); if ($errCode == 0) { //print($data . "\n"); //dump($data); return $data; } else { //print($errCode . "\n"); //dump($errCode); return $errCode; } } }
HTTP-Kapselungsfunktion:
/** * 发送HTTP请求方法 * @param string $url 请求URL * @param array $params 请求参数 * @param string $method 请求方法GET/POST * @return array $data 响应数据 */ function http($url, $params, $method = 'GET', $header = array(), $multi = false){ $opts = array( CURLOPT_TIMEOUT => 30, CURLOPT_RETURNTRANSFER => 1, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_HTTPHEADER => $header ); /* 根据请求类型设置特定参数 */ switch(strtoupper($method)){ case 'GET': $opts[CURLOPT_URL] = $url . '?' . http_build_query($params); break; case 'POST': //判断是否传输文件 $params = $multi ? $params : http_build_query($params); $opts[CURLOPT_URL] = $url; $opts[CURLOPT_POST] = 1; $opts[CURLOPT_POSTFIELDS] = $params; break; default: throw new Exception('不支持的请求方式!'); } /* 初始化并执行curl请求 */ $ch = curl_init(); curl_setopt_array($ch, $opts); $data = curl_exec($ch); $error = curl_error($ch); curl_close($ch); if($error) throw new Exception('请求发生错误:' . $error); return $data; }
Dann der Code des Miniprogramms:
// 获取用户信息 wx.getSetting({ success: res => { if (res.authSetting['scope.userInfo']) { // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框 wx.getUserInfo({ success: res => { console.log(res); var encryptedData = res.encryptedData var iv = res.iv wx.request({ url: "https://你的服务器地址/dologin",//dologin是访问后端的方法 method: "post", data: { code: code, encryptedData: encryptedData, iv: iv }, success: function (ret) { console.log(ret); } }) // 可以将 res 发送给后台解码出 unionId this.globalData.userInfo = res.userInfo // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 // 所以此处加入 callback 以防止这种情况 if (this.userInfoReadyCallback) { this.userInfoReadyCallback(res) } } }) } } }) },
Wenn ein Fehler auftritt, debuggen Finden Sie es selbst und finden Sie den Grund.
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für alle zum Lernen hilfreich ist Chinesische Website!
Verwandte Empfehlungen:
Analyse zum Rückrufproblem des thinkPHP-Frameworks, das die Alipay-Sofortkontoschnittstelle andockt
Über thinkPHP WeChat Teilen Nutzungsanalyse der Schnittstelle JSSDK
Das obige ist der detaillierte Inhalt vonSo verwenden Sie das Thinkphp5 WeChat-Applet, um eine Benutzerinformationsschnittstelle zu erhalten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!