Android 客戶端掃描網頁端二維碼實現登入
阿新 • • 發佈:2019-01-01
->Android +PHP+Swoole+Websocket 客戶端掃描網頁端二維碼實現登入
主要涉及技術和類庫
- php phpqrcode 類庫 PHP生成二維碼
- php swoole 擴充套件
- php redis 擴充套件
- js websocket 客戶端
- android zxing 類庫掃描二維碼
- android okhttp 網路類庫
- mysql 儲存資料
注意:最終實現為 DEMO 版本,切勿拿到生產環境上使用。
檔案列表介紹
- QRScanner.apk android掃描二維碼客戶端(小米2S上測試了,哈哈其他不知道相容不,畢竟不是寫android的)
- api.php android 請求介面處理,並且轉發 UDP 到 api_server.php
- api_server.php 服務端處理
- qrlogin.sql 資料庫配置檔案
基礎配置
1.資料庫連線配置
./db/Pdomysql.clss
``` private static $config = array( 'dbtype' => 'mysql', 'dbhost' => '127.0.0.1', 'dbuser' => 'root', 'dbpass' => '123456', 'databases' => 'demo', 'dbport' => '3306', 'charset' => 'UTF8', 'pconnect' => false, 'debug' => true, ); 資料庫根據自己的環境配置,這垃圾程式碼,大家將就吧 ```
2.檔案許可權
./temp 讀寫許可權(linux)
3.修改index.php 的token 地址配置
```
$tokenURL = 'http://your_ip/qrlogin/api.php?token='.$uuid;
```
4.配置 api_server.php swoole_websocket_server、Redis、UDP監聽地址和埠
``` $serv = new swoole_websocket_server("0.0.0.0", 9502); $redis = new Redis(); $redis->connect('127.0.0.1', 6379); //這裡監聽了一個UDP埠用來 監聽客服端 token 請求的 $serv->addlistener('0.0.0.0', 9503, SWOOLE_SOCK_UDP); ``` 根據自己的實際環境做修改
基本實現原理(沒有啥技術含量)
瀏覽網頁(index.php),生成 Token(UUID也可以這麼說),儲存到 MySql 資料庫或者快取也可以,有Redis
嘛,websocket 連線到 swoole,等待推送資訊客戶端掃描二維碼裡面的Token,Android 客戶端(使用者登入狀態)攜帶使用者名稱和Token或者其他標識
請求api.php做校驗更新資料庫,api.php 傳送 UDP 請求到 api_server.phpapi_server.php 接受到 UDP 請求處理後將登入資訊推送到網頁客戶端
寫到最後
實現原理簡單,有安全問題,實現的一種思路,不在個位看官面前班門弄斧,學海無涯,so 寫程式碼去吧