1. 程式人生 > >Android 客戶端掃描網頁端二維碼實現登入

Android 客戶端掃描網頁端二維碼實現登入

->Android +PHP+Swoole+Websocket 客戶端掃描網頁端二維碼實現登入

主要涉及技術和類庫

  1. php phpqrcode 類庫 PHP生成二維碼
  2. php swoole 擴充套件
  3. php redis 擴充套件
  4. js websocket 客戶端
  5. android zxing 類庫掃描二維碼
  6. android okhttp 網路類庫
  7. mysql 儲存資料
    注意:最終實現為 DEMO 版本,切勿拿到生產環境上使用。

檔案列表介紹

  1. QRScanner.apk android掃描二維碼客戶端(小米2S上測試了,哈哈其他不知道相容不,畢竟不是寫android的)
  2. api.php android 請求介面處理,並且轉發 UDP 到 api_server.php
  3. api_server.php 服務端處理
  4. 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);
    ```
    根據自己的實際環境做修改

基本實現原理(沒有啥技術含量)

  1. 瀏覽網頁(index.php),生成 Token(UUID也可以這麼說),儲存到 MySql 資料庫或者快取也可以,有Redis
    嘛,websocket 連線到 swoole,等待推送資訊

  2. 客戶端掃描二維碼裡面的Token,Android 客戶端(使用者登入狀態)攜帶使用者名稱和Token或者其他標識
    請求api.php做校驗更新資料庫,api.php 傳送 UDP 請求到 api_server.php

  3. api_server.php 接受到 UDP 請求處理後將登入資訊推送到網頁客戶端

寫到最後

實現原理簡單,有安全問題,實現的一種思路,不在個位看官面前班門弄斧,學海無涯,so 寫程式碼去吧