Metamask为什么取不到账号?
当你使用Metamask测试以太坊DApp时,如果出现莫名其妙的问题,检查一下web3.eth.accounts是否可以获取到账户,如果不能获取的话,那么最大的可能是你使用了新版的Metamask,并且默认启用了隐私模式。
有两种办法来让你的DApp可以正常访问Metamask管理的账户:关闭隐私模式,或者修改JavaScript代码使其兼容Metamask的隐私模式。
一、关闭隐私模式
在metamask中首先进入设置,然后点击security & privacy,
在隐私模式菜单,选择关闭隐私模式即可:
二、兼容隐私模式
在2018年11月,Metamask刚引入隐私模式时,该选项默认是关闭的。但是在
最新的版本中,已经默认开启了隐私模式。要求每个用户都手动关闭隐私模式
是不现实的,因此更好的方案是修改我们的JavaScript代码来兼容隐私模式:
window.addEventListener('load', async () => { // Modern dapp browsers... if (window.ethereum) { window.web3 = new Web3(ethereum); try { // Request account access if needed await ethereum.enable(); // Acccounts now exposed web3.eth.sendTransaction({/* ... */}); } catch (error) { // User denied account access... } } // Legacy dapp browsers... else if (window.web3) { window.web3 = new Web3(web3.currentProvider); // Acccounts always exposed web3.eth.sendTransaction({/* ... */}); } // Non-dapp browsers... else { console.log('Non-Ethereum browser detected. You should consider trying MetaMask!'); } });
使用window.ethereum
来判断是否新版metamask,如果是的话,就调用ethereum.enable()
方法来请求用户授权,这将在用户网页中弹出一个授权对话框,类似如下:
一旦用户点击了connect
按钮,你的应用就可以像之前一样访问Metamask的账户了。
如果希望快速掌握以太坊智能合约与DApp开发,可以访问汇智网的在线互动课程:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Fabric Java SDK 1.4简明教程
在超级账本Fabric区块链中,应用通过节点的RPC协议接口访问链码。Java应用可以使用官方提供的Fabric-sdk-java开发包来实现对链码的访问,java开发包封装了Fabric区块链的GRPC链码访问协议,有利于开发人员聚焦于业务逻辑。本文将通过编写一个最简单的可以访问Fabric链码的Java应用,来帮助你快速上手Fabric区块链的Java应用开发。 如果希望快速掌握Fabric区块链的链码及应用开发,建议访问汇智网的在线互动课程: Fabric区块链Java开发详解 Fabric区块链NodeJs开发详解 基本原理 在Fabric区块链中,应用通过节点的RPC协议接口访问链码: 类似于Shim API对链码通信协议的封装,Fabric Java SDK提供了 对节点RPC协议接口的封装,其入口类为HFClient,对链码的查询和交易操作则 封装在Channel类中: 由于Fabric是许可制区块链,因此应用也需要持有证书和私钥以表征自己的身份,HFClient实例 依赖于User接口的实现对象来访问一个特定身份的证书和私钥,因此在访问 链码之前,我们需要首先定义一个简...
- 下一篇
将ssh key添加到ssh-agent使用命令ssh-add ~/.ssh/id_rsa结果报错
将ssh key添加到ssh-agent使用命令ssh-add ~/.ssh/id_rsa结果报错 Error connecting to agent: No such file or directory 开启ssh-agent:ssh-agent 报错: unable to start ssh-agent service, error :1058 win+R打开services查看 “OpenSSH Authentication Agent” 服务是否开启,如果是 “disabled”(win10自动禁用了)启动服务,设置自动
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2更换Tomcat为Jetty,小型站点的福音