android开发之扫描二维码实现网页登录
来源:互联网 发布:windows bitlocke解密r 编辑:程序博客网 时间:2024/05/16 16:11
扫描登录详细流程:
一. 扫描登录成功的后台数据依托:数据库表
id: int类型并自增
username: 存储本次登录的用户名
randnumber: 随机数,确保当前二维码随机并且唯一,用来标识每一个不同的二维码
二. 在扫描登录的过程中:
需要PC端有携带扫描网页登录的二维码(携带着随机数的信息),同时生成二维码的同时要向服务器保存二维码随机数信息.
android客户端想要实现扫码登录就需要进行扫码操作,得到当前二维码的随机数信息,假设客户端实现了扫码登录并且有了用户名信息,客户端可以携带username保存到数据库当中randnumber为扫码得到的随机数信息对应的username字段上.
网页端开始轮询当随机数相同的的数据上是否有对应的username,如果没有继续轮询,如果有则跳转登录.
开发流程:
- 创建数据库使用XAMPP,它集成了Apache服务器
①、配置XAMPP我就不说了
②、如果mysql启动不了,报1067错误,那么删除在MySQL安装目录下的Data目录中的ib_logfile0和ib_logfile1两个文件。
如果成功:
点击MySql的Admin进入:- 创建数据库
- 点击左侧数据库,创建表:
- 创建数据库
PHP网页端生成简单二维码,使用HBuilder开发工具
- 点击右键创建Web项目:
- 删除项目中没用的文件:
- 同时新建PHP文件:(index.php)
生成二维码的api:http://qr.liantu.com/api.php?text=随机数
- 详情请登录:www.liantu.com/pingtai/
- 使用该api能生成随机的二维码图片:
- 详情请登录:www.liantu.com/pingtai/
来到HBuilder开发工具中:
- Code:
- 效果:
- Code:
但问题来了,这样只能生成一种二维码,那怎么让其自动生成不同的二维码呢?– 快使用PHP语言
- Code:
- Code:
将生成的二维码随机数字保存到数据库当中:
- 在该项目中新建PHP文件(mysql_connect.php)用于与数据库进行连接
Code:
mysql_connect.php
这样数据库连接文件就写好了!
index.php
这样将randnumber数据写入到数据库当中就基本OK了! - 效果:刷新网页端二维码页面,将会把randnumber数据保存到数据库中。
- 在该项目中新建PHP文件(mysql_connect.php)用于与数据库进行连接
- 点击右键创建Web项目:
PHP轮询数据库(判断当前二维码在数据库中拥有的randnumber有没有对应登录的username)
使用JavaScript语言来实现轮询数据库操作:
①.异步加载网络:xmlHttp
②.将PHP当中的值传递给JavaScript当中:
< input xxx/>
randnumber = document.getElementById(xxx).value;- 在index.php中的Code:
- 新建polling.php文件:用于执行轮询数据库操作
- 在index.php中的Code:
使用JavaScript语言来实现监听扫码登录事件:
- 当执行了轮询数据库操作之后,我们在index.php文件中添加监听事件:
- 新建welcome.php模拟扫码登录成功后重定向:
Code:
Hello Zanelove!
- 当执行了轮询数据库操作之后,我们在index.php文件中添加监听事件:
- PHP自定API接口
- 新建saveUsername.php文件,为了便捷和直白使用的是GET方式,但实际开发当中,你应该要将数据进行加密
- 效果:
- 新建saveUsername.php文件,为了便捷和直白使用的是GET方式,但实际开发当中,你应该要将数据进行加密
Android客户端扫描二维码
- 在github上下载zxing库:https://github.com/zxing/zxing(功能很多,过于庞大)
or
因此,针对二维码我们将使用专门用于扫描二维码的类库:BarCodeLibrary(下载地址:http://pan.baidu.com/s/1sjJmzfv 提取密码: k862) - 导入BarCodeLibrary到Eclipse当中
在Eclipse当中创建新项目并依赖于BarCodeLibrary类库
Code:
- MainActivity.java
public class MainActivity extends Activity implements OnClickListener { private Button btnScan; private EditText etUsername; private static final String WEB_URL = "http://172.31.19.202/QRLogin/"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnScan = (Button) findViewById(R.id.btnScan); btnScan.setOnClickListener(this); etUsername = (EditText) findViewById(R.id.etUsername); } @Override public void onClick(View v) { //扫码操作 Intent intent = new Intent(this, CaptureActivity.class); startActivityForResult(intent, 0); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK) { String randnumber = data.getExtras().getString("result"); String username = etUsername.getText().toString(); String url = WEB_URL + "saveUsername.php?randnumber=" + randnumber + "&username=" + username; //访问url HttpUtils.login(url); } }}
- 连接网络工具类:
public class HttpUtils{ public static void login(final String url){ new Thread(new Runnable() { @Override public void run() { HttpURLConnection connection; try { connection = (HttpURLConnection) new URL(url).openConnection(); connection.setRequestMethod("GET"); connection.getInputStream(); } catch (Exception e) { e.printStackTrace(); } } }).start(); }}
- 在清单文件中添加节点:
<activity android:name="com.zxing.activity.CaptureActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden" ></activity>
- 添加权限:
<uses-permission android:name="android.permission.CAMERA"/><uses-permission android:name="android.permission.VIBRATE"/><uses-permission android:name="android.permission.INTERNET"/>
- 在github上下载zxing库:https://github.com/zxing/zxing(功能很多,过于庞大)
Android客户端访问自定API实现网页登录
因为是Android客户端访问PC端网页地址,那么就要有一个概念:”需要IP地址”,只有这样我们才能拼接一串可访问的网页地址!
cmd -> ipconfig
尝试访问:Code: 在上面已经实现了!
- android开发之扫描二维码实现网页登录
- Android 扫描二维码实现网页登录
- Android实现二维码扫描登录网页
- Android 扫描二维码实现网页登录
- Android 客户端扫描网页端二维码实现登录
- Android开发之二维码扫描
- Android 应用之二维码扫描登录
- Android开发之利用ZXing库实现二维码的扫描
- Android开发之Zbar实现二维码扫描功能
- iOS开发 - 微信扫描二维码登录网页的原理
- android开发之集成zxing,二维码,以及扫描二维码的功能实现。带源代码下载
- 实现网站二维码扫描登录
- 实现网站二维码扫描登录
- java实现二维码扫描登录
- 实现网站二维码扫描登录
- android 二维码扫描开发
- Android二维码扫描开发
- android开发二维码扫描
- Android 图片异步加载 加载网络图片
- Android 基础知识点
- 黑马程序员——JAVA 面向对象总结(三)
- Android USB Tethering
- Python中文分词组件 jieba
- android开发之扫描二维码实现网页登录
- 实现一个so库文件名称为libupper.so提供给c/cpp调用
- <!DOCTYPE> 标签的介绍
- php-fpm参数优化
- Text Kit框架高级应用——特殊字体
- Spring.NET(二)——读取定义对象的xml
- Linux那些事儿 之 戏说USB(32)驱动的生命线(四)
- 个人学习易语言的一些真实心得
- 步入高端战场:金士顿推PCI-E接口系列M.2固态