我尝试使用Metaplex Javascript SDK为所有者获取Solana Nfts,但请求给了我以下响应:
Error: 410 Gone: {"jsonrpc":"2.0","error":{"code": 410, "message":"The RPC call or parameters have been disabled."}
我使用React-js框架和钩子。我不能迁移到Next-js,我也不使用typescript。
这是我调用的函数。这是一个标准函数,我从Web上复制了它:
const getNftsForOwnerByAddressAndChainNameSolana = async (address, chainName) => {
const connection = new Connection(clusterApiUrl(chainName), "confirmed");
const keypair = Keypair.generate();
const metaplex = new Metaplex(connection);
metaplex.use(keypairIdentity(keypair));
const owner = new PublicKey(address);
const allNFTs = await metaplex.nfts().findAllByOwner({ owner });
console.log(allNFTs);
}
其中chainName =“mainnet-beta”;和地址是一个真实的的索拉纳地址,我可以在官方网站上探索索拉纳。
这就是答案:
Error: 410 Gone: {"jsonrpc":"2.0","error":{"code": 410, "message":"The RPC call or parameters have been disabled."}
我试图连接到集群“devnet”.因此,chainName =“devnet”;请求有一个成功响应(空数组,没有nfts),程序工作,但我需要连接到集群“mainnet-beta”,因为nfts在那里。
我还尝试了这个功能,它使用Alchemy API Key:
const getNftsForOwnerByAddressAndChainNameSolana = async (address) => {
const rpc = "https://solana-mainnet.g.alchemy.com/v2/<ALCHEMY_API_KEY>";
const connection = new Connection(rpc, "confirmed");
const keypair = Keypair.generate();
const metaplex = new Metaplex(connection);
metaplex.use(keypairIdentity(keypair));
const owner = new PublicKey(address);
const allNFTs = await metaplex.nfts().findAllByOwner({ owner });
console.log(allNFTs);
}
它返回一个空数组。
你可以看到在mainnet-beta集群上有nfts:https://explorer.solana.com/address/5VRrCiaczvcHUoRUFz7ZXzR1zpGSCBbU7rndFRYdAFYC/tokens
我在网上找了很多,但没有找到解决办法。
如何解决这个问题?这可能吗?
2条答案
按热度按时间1wnzp6jl1#
你的代码很可能没有错。
410 Gone
表示您正在使用的RPC没有提供findAllByOwner正在使用的函数调用。请尝试使用其他RPC来解决此问题。例如,Quicknode和extrnode对我来说工作得很好。
iqxoj9l92#
已经变了。我是这样做的。它获取使用元数据所需的json文件信息。