Пытаюсь создать расширение с подключением к MetaMask но мне выдает что MetaMask не установлен. Библиотека веб3 установлена
manifest.json
{
"manifest_version": 3,
"name": "MetaMask Auth",
"version": "1.0",
"description": "Extension for MetaMask authentication",
"permissions": [
"identity"
],
"background": {
"service_worker": "background.js"
},
"action": {
"default_popup": "popup.html",
"default_icon": {
"16": "images/icon16.png"
}
},
"icons": {
"16": "images/icon16.png"
}
}
popup.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MetaMask Auth</title>
</head>
<body>
<button id="authButton">Authorize with MetaMask</button>
<!-- Подключаем внешний скрипт -->
<script src="popup.js"></script>
</body>
</html>
popup.js
document.getElementById('authButton').addEventListener('click', async () => {
try {
// Проверяем доступность MetaMask
if (typeof window.ethereum === 'undefined') {
alert('MetaMask is not installed!');
return;
}
// Запрашиваем разрешение на подключение к аккаунту MetaMask
const accounts = await ethereum.request({ method: 'eth_requestAccounts' });
// Проверяем, есть ли у пользователя аккаунты в MetaMask
if (!accounts || accounts.length === 0) {
alert('No accounts found in MetaMask!');
return;
}
// Получаем адрес пользователя
const userAddress = accounts[0];
// Отправляем сообщение с адресом пользователя фоновому скрипту
chrome.runtime.sendMessage({ type: 'authorization_success', userAddress });
} catch (error) {
console.error('Authorization failed:', error);
alert('Authorization failed!');
}
});
background.js
chrome.runtime.onInstalled.addListener(() => {
console.log('Extension installed');
});
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.type === 'authorization_success') {
console.log('Authorization successful! User address:', message.userAddress);
// здесь можно выполнять дополнительные действия при успешной авторизации
}
});