WeChat ミニ プログラムは、近年非常に人気のあるアプリケーション タイプであり、その利便性、使いやすさ、環境に優しい完全性により、さまざまなシナリオで広く使用されています。 WeChat アプレットを開発する場合、多くの場合、ユーザー ログイン機能を実装する必要がありますが、これは従来の Web サイト ログインと同様に実装が困難です。この記事では、WeChat アプレット ログインの実装プロセスを紹介します。これには、主にコードを取得するための API を呼び出すフロントエンド、コードを受信して WeChat サーバーにリクエストしてユーザーの openid と session_key を取得し、最後にユーザー情報を独自のデータベースに保存します。
1. WeChat ミニ プログラムのログイン プロセス
WeChat ミニ プログラムのログイン プロセスは、次の図に示すとおりです。プロセスは次のとおりです。
ユーザーはミニ プログラムを開き、ログイン ボタンをクリックします。
フロントエンドは、wx.login を介して API を呼び出し、一時的なログイン資格情報コードを取得します。
wx.login({ success: function(res) { if (res.code) { // 发送code至后端服务器 wx.request({ url: 'https://example.com/login.php', method: 'POST', data: {'code': res.code}, success: function(resp) { // 获取后端返回的token并存储至本地 wx.setStorageSync('token', resp.data.token); } }); } else { console.log('获取登录态失败!' + res.errMsg); } } });
$appid = "Your AppID"; $secret = "Your AppSecret"; $code = $_POST['code']; $url = "https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$secret&js_code=$code&grant_type=authorization_code"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $res = curl_exec($ch); curl_close($ch); $data = json_decode($res, true); $openid = $data['openid']; $session_key = $data['session_key'];
// 连接数据库 $con = mysqli_connect('localhost', 'root', 'password', 'database'); mysqli_set_charset($con, 'utf8'); // 查询用户 $result = mysqli_query($con, "SELECT * FROM user WHERE openid='$openid' LIMIT 1"); if(mysqli_num_rows($result) == 0) { // 添加新用户 $now = date('Y-m-d H:i:s'); mysqli_query($con, "INSERT INTO user (openid, create_time) VALUES ('$openid', '$now')"); // 获取用户ID $user_id = mysqli_insert_id($con); } else { // 获取用户ID $row = mysqli_fetch_assoc($result); $user_id = $row['id']; }
// 生成token $token = md5($user_id . time() . mt_rand()); // 存储token和用户信息 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $redis->setex($token, 3600 * 24 * 7, $user_id); // 返回token echo json_encode(array('token' => $token));
wx.request({ url: 'https://example.com/login.php', method: 'POST', data: {'code': res.code}, success: function(resp) { // 获取后端返回的token并存储至本地 wx.setStorageSync('token', resp.data.token); } });
// 验证token有效性 $token = $_POST['token']; $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $user_id = $redis->get($token); if($user_id) { // 验证成功,返回用户信息 // ... } else { // 验证失败,返回未登录错误 echo json_encode(array('errcode' => 40001, 'errmsg' => 'user not logged in')); }
以上がPHP で WeChat アプレット ログインを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。