Задать вопрос
@Chesterfield25

Можно ли создать расширение с подключение к MetaMask?

Пытаюсь создать расширение с подключением к 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);
        // здесь можно выполнять дополнительные действия при успешной авторизации
    }
});
  • Вопрос задан
  • 16 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы