In this case, those are read only functions (not transactions), so you will get the value directly. You can use runContractFunction.
In which directive/namespace is the RunContractFunction ? Because I canāt use it or canāt read the method. I am using Web3 Game Kit Package v1.2.7 and Unity 2021.3.5 .
Please help.
Hi @dgoodrich & @0xprof,
We are making WebGL game with Moralis and Metamask using Unity. Everything working fine from login to call contract function.
But we want auto-login Metamask(without popup) if the user reopens the tab or refreshes Tab once the user login with Metamask. It is possible with WebGL Moralis 1.2.10?
thanks
Hi guys,
is there a way to authenticate 2 users on one Unity instance ?
I would like to have two qr codes popin on split screenā¦ is it doable ?
Thanks!
This might be possible if you duplicate all the components, though you may run into issues with socket connections from wallet connect.
I was wondering if anyone knows of a Unity implementation for Unstoppable domains? We have been able to integrate web3auth using their SDK, but Unstoppable doesnāt seem to have a Unity SDK.
How do you want to implement Unstoppable Domains?
Initially we would like to have Unstoppable as an authentication method. Currently we use the built-in wallet connect and our own integration with web3auth.
It can maybe done directly if they have an API. Would be best to contact them if they offer a solution.
I am in contact and waiting for response. I thought someone might have already tackled the implementation and have a solution or general steps.
On a side-note if anyone needs guidance on web3auth implementation with Moralis Unity let me know and I can provide assistance
If you could make a new topic on using the Web3Auth SDK, that would be great. Some other users have asked about that.
Iām having problems with the self hosted parse server. Iāve installed the following onto my server as follows via ssh:
yarn add parse-server --ignore-engines
yarn dev:db-start
yarn start
cd /var/www/html/DnA/parse-server-migration
yarn build
yarn start
yarn dev:db-start
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo systemctl start mongod
yarn add parse-dashboard --ignore-engines
yarn add moralis --ignore-engines
Then When I start this happens:
yarn start -- --appId *********************************** --masterKey ************************************ --serverURL https://127.0.0.1:1337/server
yarn run v1.22.19
warning From Yarn 1.0 onwards, scripts don't require "--" for options to be forwarded. In a future version, any explicit "--" will be forwarded as-is to the scripts.
$ node build/index.js --appId pRLSWTZ8RUMngGVmgWmI8IzaUXFgUsX8Z1wZ6leJ --masterKey iDIgWXWAXK49KOIuKexjmwQzofjYyUeEj33s72K5we7GpNCDeUKNakNfCbgkDEqO --serverURL https://127.0.0.1:1337/server
bigint: Failed to load bindings, pure JS will be used (try npm run rebuild?)
warn: DeprecationWarning: The Parse Server option 'directAccess' default will change to 'true' in a future version. Additionally, the environment variable 'PARSE_SERVER_ENABLE_EXPERIMENTAL_DIRECT_ACCESS' will be deprecated and renamed to 'PARSE_SERVER_DIRECT_ACCESS' in a future version; it is currently possible to use either one.
warn: DeprecationWarning: The Parse Server option 'enforcePrivateUsers' default will change to 'true' in a future version.
warn: DeprecationWarning: The Parse Server option 'allowClientClassCreation' default will change to 'false' in a future version.
info: Parse LiveQuery Server started running
Moralis Server is running on port 1337 and stream webhook url https://d59f-167-71-97-138.ngrok.io/streams-webhook
MongoServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017
at Timeout._onTimeout (/var/www/html/DnA/parse-server-migration/node_modules/mongodb/lib/sdam/topology.js:291:38)
at listOnTimeout (node:internal/timers:564:17)
at process.processTimers (node:internal/timers:507:7) {
reason: TopologyDescription {
type: 'Unknown',
servers: Map(1) { 'localhost:27017' => [ServerDescription] },
stale: false,
compatible: true,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
setName: null,
maxElectionId: null,
maxSetVersion: null,
commonWireVersion: 0,
logicalSessionTimeoutMinutes: null
},
code: undefined,
[Symbol(errorLabels)]: Set(0) {}
}
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
My Unity code that Iām running with MoralisWeb3ApiSdk (the old-school one yes), AppManager.cs contains only the slight changes you guys said to make:
public async void WalletConnectHandler(WCSessionData data)
{
Debug.Log("Wallet connection received");
// Extract wallet address from the Wallet Connect Session data object.
address = data.accounts[0].ToLower();
string appId = MoralisInterface.GetClient().ApplicationId;
long serverTime = 0;
// Retrieve server time from Moralis Server for message signature
Dictionary<string, object> serverTimeResponse = await MoralisInterface.GetClient().Cloud.RunAsync<Dictionary<string, object>>("getServerTime", new Dictionary<string, object>());
//if (serverTimeResponse == null || !serverTimeResponse.ContainsKey("dateTime") ||
// !long.TryParse(serverTimeResponse["dateTime"].ToString(), out serverTime))
//{
// Debug.Log("Failed to retrieve server time from Moralis Server!");
//}
if (serverTimeResponse != null)
{
Debug.LogError("Failed to retrieve server time from Moralis Server!");
}
if (!MoralisInterface.IsLoggedIn())
{
Debug.Log($"Sending sign request for {address} ...");
IDictionary<string, object> requestMessageParams = new Dictionary<string, object>();
requestMessageParams.Add("address", address);
requestMessageParams.Add("chain", "Eth");
requestMessageParams.Add("network", "evm");
Dictionary<string, object> authMessage = await MoralisInterface.GetClient().Cloud.RunAsync<Dictionary<string, object>>("requestMessage", requestMessageParams);
string signMessage = authMessage["message"].ToString();
//string signMessage = $"Moralis Authentication\n\nId: {appId}:{serverTime}";
string response = await walletConnect.Session.EthPersonalSign(address, signMessage);
Debug.Log(response);
Debug.Log($"Signature {response} for {address} was returned.");
// Create moralis auth data from message signing response.
Dictionary<string, object> authData = new Dictionary<string, object> { { "id", address }, { "signature", response }, { "data", signMessage } };
Debug.Log("Logging in user.");
// Attempt to login user.
var user = await MoralisInterface.LogInAsync(authData);
if (user != null)
{
Debug.Log($"{address} logged in successfully. ");
infoLabel.text = $"{address}\nlogged in successfully!";
}
else
{
Debug.Log("User login failed.");
infoLabel.text = "Login failed";
}
}
UserLoggedInHandler();
}
public void WalletConnectSessionEstablished(WalletConnectUnitySession session)
{
InitializeWeb3();
}
private void InitializeWeb3()
{
MoralisInterface.SetupWeb3();
}
#endregion
Even with those above changes I donāt see how the null value is dealt with but hopefully you can enlighten me.
And Iāll include Screenshots of the WebGL running online, dev build along with errors:
Now, Iām REALLY hoping someone can help me, as Iāve really put A LOT of time into this, and the way the Crypto world is going, Iām about ready to jump out a window (or just drop everything and opt for Facebook/Meta login for everything ) But yeah seriously, PLEASE HELP!!!
I am able to scan the QR, my wallet sees and signs it (metamask), the browser recognizes this and says āPlease Signā¦ā so itās NEARLY THERE!!! But then, crash, Cross-Origin blah blah Errorā¦
Dave Cote
Does your Unity project (with WebGL) work with your self-hosted server locally?
I donāt know, my local machine is windows, Iām running it on my server, which is Ubuntu 20.04. It ran fine on moralis server before they retired them. Seeing it run locally on windows wouldnāt tell me much would it?
Basically it seems to start the sign in, then when getting a signature returned it complains about Cors Cross-Origin error and Key not found exception. What does that mean? Do I need my moralis key in some files on the server?
Itās to make sure thereās no immediate issues with your code and how you patched it to work with self-hosted servers. Then we can work from there instead of making assumptions.
Okay, but I posted all code, server commands and errors. Does anything stand out?
Could be a configuration issue with your server. You are also getting Mongo errors that donāt seem related to the use of Unity.
Please test first with your self-hosted server as normal.