Erc-721
NFT Opensea 元數據格式不正確?
我在這裡部署了一個 NFT 集合,並使用以下程式碼設置了 ERC721 合約的 tokenURI。
var tokenURI = await bento_collection.tokenURI(1, {from: accounts[1]}); console.log("Token URI is " + tokenURI);
對於令牌 #1,程式碼的輸出是:
Token URI is http://sushibento.club/sushis/1
此 URL 指向元數據,應由 Opensea 獲取。如果您在瀏覽器中訪問 URL,您可以看到 URL 給出了有效的 JSON:
{"name":"Sushi #1", "description":"Fresh Sushi Bento Club Sushi Character #1. The owner of this asset also owns the full commercial rights of the image itself and the original rights in the metaverse.", "image":"https://sushibento.club/assets/img/egg.png", "external_url":"https://sushibento.club/assets/img/egg.png", "attributes":[{"trait_type":"Sushi Type","value":"Unhatched Sushi Egg"}]}
但是,opensea 並沒有獲取元數據。我看不是因為在Opensea網站上,佔位符圖片還在,沒有顯示NFT屬性。在過去的幾個小時裡,我已經通過他們的網站刷新了幾次元數據,但還沒有奏效。
我無法使用他們的元數據驗證器檢查元數據,因為它不支持多邊形鏈(不知道為什麼)。為什麼我的元數據沒有被 opensea 接收?或者它有什麼問題。
有時 OpenSea 甚至可能需要幾個小時來刷新元數據。您可以嘗試的幾件事 -
- 將其上傳到 Ethereum Rinkeby 測試網,您可以在其中使用 API 檢查您的元數據是否有效。
- 您是否在 OpenSea 上按了項目上的“刷新元數據”按鈕?
- 我會嘗試將 URI 放在 HTTPS 而不是 HTTP 中作為健全性檢查
- 等待更多時間讓 OpenSea 更新:\
原來是標題問題。
我將內容作為 HTML 提供,但我需要
Content-Type: application/json; charset=utf-8
. 這是伺服器正確發送元數據所需的標頭。由於某種原因,他們的文件中沒有提到這一點。我正在使用 PHP,所以以下行為我解決了這個問題。
header('Content-Type: application/json; charset=utf-8');