codecamp

Moralis Metamask

将 Moralis 与 MetaMask 集成

Moralis 中的默认身份验证是 ​MetaMask ​钱包身份验证

1.调用鉴权函数

使用 ​MetaMask ​对用户进行身份验证很简单,可以选择使用​JS​或者​React​:

Moralis.authenticate().then(function (user) {
    console.log(user.get('ethAddress'))
})
import { useMoralis } from "react-moralis";

function App() {

    const { authenticate, isAuthenticated, user } = useMoralis();

    const login = async () => {
      if (!isAuthenticated) {

        await authenticate()
          .then(function (user) {
            console.log(user!.get("ethAddress"));
          })
          .catch(function (error) {
            console.log(error);
          });
      }
    }
}

这将连接 ​MetaMask ​并请求签名。

我们使用签名作为用户是账户所有者的证据

签名与输入用户名和密码没有什么不同。 如果用户想要使用应用程序的经过身份验证的功能,他们需要“登录”。

spaces_-MVStbACGLCycg7J5WQ2_uploads_git-blob-a2060a57aff546afa6634c7bd1053df686682c8e_MetaMask Authentication 2

它适用于所有与以太坊虚拟机 (​​EVM​​) 兼容的链,例如 ​​Binance Smart Chain​​ 和 ​​Polygon (Matic)​​,因为它们都共享相同的以太坊地址。

一旦用户登录,他们所有的链上数据都会立即同步到您的 Moralis 数据库中。 如果用户在链上移动资产,数据库会更新。

spaces_-MVStbACGLCycg7J5WQ2_uploads_git-blob-5663ad2e6bef138efd00a809e8f34f651e8baab1_Screenshot 2022-03-15 at 1

2. 更改 MetaMask 应用程序图标

可以更改用户在与您的智能合约交互时看到的图标。 为此,您必须向您的 ​dApp ​添加一个网站图标。 按照 ​MetaMask ​文档中的说明进行操作。

3.添加自定义登录消息

更改 ​MetaMask上的身份验证消息。 只需遵循:Sign-in Message

4. 示例代码

以下代码演示了一个工作示例

与Vanilla JS连接


Moralis 用户
Moralis WalletConnect
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Moralis 文件

Moralis 工具

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }