Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

393
Views
No definido web3.eth.getAccounts() en React Native, autenticación de metamáscara

Quiero autenticar al usuario por su billetera Metamask. Estoy usando el paquete web3 para interactuar con los bloques y firmar transacciones. Cuando intento obtener las cuentas de usuario, obtengo un resultado vacío:

 const Web3 = require('web3'); const web3 = new Web3( new Web3.providers.HttpProvider('https://api.avax.network/ext/bc/C/rpc') ); const addresses = await web3.eth.getAccounts();

Supongo que necesito solicitar cuentas como esta await window.ethereum.request({ method: 'eth_requestAccounts'}); pero no existe la aplicación móvil de window .

Supongo que en un flujo normal, el usuario presiona el botón de autenticación y será redirigido a la billetera Metamask para autorizar la aplicación, ¿cómo puedo hacer esto?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Tiene razón, pero también necesita conectarse a MetaMask, no a su propio RPC. Aquí está su código fijo:

 import detectEthereumProvider from '@metamask/detect-provider'; const web3 = await detectEthereumProvider(); // Use Metamask-injected web3 await web3.request({ method: 'eth_requestAccounts'}); const addresses = await web3.eth.getAccounts();
about 4 years ago · Juan Pablo Isaza Report

0

Encontré una solución, no sé si es la mejor manera de hacerlo.

Para interactuar con los bloques y firmar transacciones, los usuarios autentican su billetera MetaMask a través del servicio WalletConnect .

Después de autenticar al usuario, puedo usar el conector para crear un proveedor para usarlo con ethers.js lib (Usando web3.js, la conexión con RPC falló, decidí usar ethers en su lugar):

 const walletConnectProvider = new WalletConnectProvider({ rpc: { 43114: RPC }, chainId: 43114, connector: this.connector, qrcode: false }) let wp = await walletConnectProvider.enable(); if(wp){ this.provider = new providers.Web3Provider(walletConnectProvider); } const signer = this.provider.getSigner(); const contract = new Contract(GAMESESSION_ADDRESS, GameSession.abi, signer); ....

Es un poco complicado pero WalletConnect funciona bien.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!