Flutter设备唯一标识插件key_hash的使用

Flutter设备唯一标识插件key_hash的使用

key_hash 是一个简单的包,用于获取 Facebook 登录 API 的密钥哈希。

使用说明

要使用 key_hash 插件,你需要先在你的 Flutter 项目中添加该依赖。以下是详细的步骤和示例代码。

步骤

  1. pubspec.yaml 文件中添加 key_hash 依赖。

    dependencies:
      key_hash: ^1.0.0
    
  2. 确保你已经安装了所有依赖,并运行以下命令:

    flutter pub get
    
  3. 在你的 Dart 文件中导入 key_hash 包并初始化状态。

示例代码

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:key_hash/key_hash.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _yourKeyHash = '未知';

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  // 平台消息是异步的,因此我们在异步方法中进行初始化。
  Future<void> initPlatformState() async {
    String yourKeyHash;
    // 平台消息可能会失败,所以我们使用 try/catch 处理 PlatformException。
    try {
      yourKeyHash = await KeyHash.getKeyHash;
    } on PlatformException {
      yourKeyHash = '获取平台版本失败。';
    }

    // 如果小部件从树中被移除时异步平台消息还在飞行中,我们应该丢弃回复而不是调用 setState 来更新我们的非存在的外观。
    if (!mounted) return;

    setState(() {
      _yourKeyHash = yourKeyHash;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('你的密钥哈希'),
        ),
        body: Center(
          child: Text('$_yourKeyHash\n'),
        ),
      ),
    );
  }
}

更多关于Flutter设备唯一标识插件key_hash的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter设备唯一标识插件key_hash的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中,key_hash 是一个用于生成 Android 应用的签名密钥哈希的工具。这个哈希值通常用于与第三方服务(如 Facebook 登录)进行集成。生成 key_hash 的过程涉及到使用 Java 的 keytool 和 OpenSSL 工具。

1. 生成 Key Hash 的步骤

1.1 使用 keytool 获取签名证书的 SHA-1 指纹

首先,你需要使用 keytool 来获取你的 Android 应用签名证书的 SHA-1 指纹。keytool 是 Java 开发工具包(JDK)的一部分。

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -list -v

对于调试密钥库(debug keystore),默认的别名是 androiddebugkey,默认的密钥库路径是 ~/.android/debug.keystore,默认的密钥库密码是 android

1.2 使用 OpenSSL 生成 Key Hash

接下来,你需要使用 OpenSSL 来生成 Key Hash。假设你已经从 keytool 中获取了 SHA-1 指纹,你可以按照以下步骤操作:

  1. 将 SHA-1 指纹转换为二进制格式:

    echo -n "SHA1_FINGERPRINT" | xxd -r -p | openssl sha1 -binary
    

    其中 SHA1_FINGERPRINT 是你从 keytool 获取的 SHA-1 指纹。

  2. 将二进制数据转换为 Base64 编码:

    openssl base64
    

    将上一步的输出通过管道传递给 openssl base64,最终的输出就是你的 Key Hash。

2. 在 Flutter 中使用 key_hash 插件

如果你希望在 Flutter 应用中自动获取设备的 Key Hash,可以使用一些第三方插件,例如 flutter_keychaindevice_info。不过,这些插件通常用于获取设备信息,而不是直接生成 Key Hash。

2.1 使用 flutter_keychain 插件

  1. pubspec.yaml 中添加依赖:

    dependencies:
      flutter_keychain: ^2.0.0
    
  2. 在代码中使用 flutter_keychain 获取设备信息:

    import 'package:flutter_keychain/flutter_keychain.dart';
    
    Future<void> getKeyHash() async {
      String? keyHash = await FlutterKeychain.get(key: "key_hash");
      print("Key Hash: $keyHash");
    }
    

    注意:flutter_keychain 主要用于存储和读取密钥,而不是生成 Key Hash。

2.2 使用 device_info 插件

  1. pubspec.yaml 中添加依赖:

    dependencies:
      device_info: ^2.0.0
    
  2. 在代码中使用 device_info 获取设备信息:

    import 'package:device_info/device_info.dart';
    
    Future<void> getDeviceInfo() async {
      DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
      AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
      print("Android ID: ${androidInfo.androidId}");
    }
回到顶部