const onConnectAndSign = async () => {
// 初始化 MetaMask SDK 配置
const sdk = new MetaMaskSDK({
dappMetadata: {
url: 'dApp ', // dApp 的网址
name: 'dApp ', // dApp 的名称
},
infuraAPIKey: 'infuraAPIKey', // Infura API 密钥,用于访问以太坊网络
enableAnalytics: true, // 启用 SDK 分析
checkInstallationImmediately: false, // 启动时不立即检查 MetaMask 是否已安装
logging: {
developerMode: true, // 开发者模式日志
sdk: true, // 启用 SDK 日志
},
i18nOptions: {
enabled: true, // 启用多语言支持
},
});
try {
// 连接 MetaMask,并获取用户的账户地址列表
const accounts = await sdk.connect();
// 获取 MetaMask 提供的 web3 provider
const provider = await sdk.getProvider();
// 获取当前选择的账户地址
const address = provider.getSelectedAddress();
// 定义签名消息
const signStr = 'action: Vitatoken STARK Key\nonlySignOn: vitatoken.io';
// 使用 `personal_sign` 方法对消息进行签名
const web3Signature = await provider.request({
method: 'personal_sign',
params: [signStr, accounts[0]], // 签名的消息和账户地址
});
// 调用 `metaMaskVerify` 方法,并传递签名结果、时间戳和账户地址
metaMaskVerify({
web3Signature,
timestamp: Date.now(), // 当前时间戳
address,
});
} catch (err) {
// 捕获并处理连接失败或签名失败的错误
console.warn('连接失败..', err);
}
};