A module for providing a MetaMask provider to other WebExtensions.
The account provided by this provider will be the user's MetaMask account.
When sending signing requests to this provider, MetaMask will prompt the user to sign with their accounts.
Works in:
- Chrome
- Firefox
Using npm as a package manager:
npm install metamask-extension-provider -S
Using a bundler like browserify:
const createMetaMaskProvider = require('metamask-extension-provider')
const provider = createMetaMaskProvider()
provider.on('error', (error) => {
// Failed to connect to MetaMask, fallback logic.
})
// Enjoy!
Simply add MetaMask's extension ID for that browser's store to the config file.
Use the ./sample-extension
folder as an WebExtension. You can easily add it to Chrome or Firefox Developer Edition.
You must have browserify
installed (npm i -g browserify
).
You can edit the sample file sample-extension/index.js
and then rebuild the file with npm run buildSample
.
You'll need to edit the method getMetaMaskId()
to return your local development MetaMask's id. You can get that from your MetaMask console with chrome.runtime.id
.
In order to identify when there is a problem (like MetaMask was not connected), some kind of proper error handling must be added to metamask-inpage-provider that exposes the errors to the consumer of the provider. Maybe making it an event-emitter, so it can emit its errors, instead of just logging them.