Skip to content

Commit 5726445

Browse files
committed
logout api changes + minor fixes
1 parent 468f263 commit 5726445

File tree

2 files changed

+57
-68
lines changed

2 files changed

+57
-68
lines changed

Assets/Plugins/Web3AuthSDK/Api/Web3AuthApi.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using Newtonsoft.Json.Linq;
44
using Newtonsoft.Json;
55
using UnityEngine.Networking;
6+
using UnityEngine;
67

78
public class Web3AuthApi
89
{
@@ -32,13 +33,13 @@ public IEnumerator authorizeSession(string key, Action<StoreApiResponse> callbac
3233

3334
public IEnumerator logout(LogoutApiRequest logoutApiRequest, Action<JObject> callback)
3435
{
35-
var request = new UnityWebRequest($"{baseAddress}/store/set");
36-
37-
byte[] data = new System.Text.UTF8Encoding().GetBytes(JsonConvert.SerializeObject(logoutApiRequest));
38-
request.uploadHandler = new UploadHandlerRaw(data);
39-
request.downloadHandler = new DownloadHandlerBuffer();
40-
request.SetRequestHeader("Content-Type", "application/json");
36+
WWWForm data = new WWWForm();
37+
data.AddField("key", logoutApiRequest.key);
38+
data.AddField("data", logoutApiRequest.data);
39+
data.AddField("signature", logoutApiRequest.signature);
40+
data.AddField("timeout", logoutApiRequest.timeout.ToString());
4141

42+
var request = UnityWebRequest.Post($"{baseAddress}/store/set", data);
4243
yield return request.SendWebRequest();
4344

4445
if (request.result == UnityWebRequest.Result.Success)

Assets/Plugins/Web3AuthSDK/Web3Auth.cs

Lines changed: 50 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -232,9 +232,13 @@ private void request(string path, LoginParams loginParams = null, Dictionary<st
232232
public void setResultUrl(Uri uri)
233233
{
234234
string hash = uri.Fragment;
235+
#if !UNITY_EDITOR && UNITY_WEBGL
235236
if (hash == null || hash.Length == 0)
236237
return;
237-
238+
#else
239+
if (hash == null)
240+
throw new UserCancelledException();
241+
#endif
238242
hash = hash.Remove(0, 1);
239243

240244
Dictionary<string, string> queryParameters = Utils.ParseQuery(uri.Query);
@@ -288,7 +292,6 @@ public void login(LoginParams loginParams)
288292
public void logout(Dictionary<string, object> extraParams)
289293
{
290294
sessionTimeOutAPI();
291-
request("logout", extraParams: extraParams);
292295
}
293296

294297
public void logout(Uri redirectUrl = null, string appState = null)
@@ -315,21 +318,6 @@ private void authorizeSession()
315318
{
316319
var shareMetadata = Newtonsoft.Json.JsonConvert.DeserializeObject<ShareMetadata>(response.message);
317320

318-
KeyStoreManagerUtils.savePreferenceData(
319-
KeyStoreManagerUtils.EPHEM_PUBLIC_Key,
320-
shareMetadata.ephemPublicKey
321-
);
322-
323-
KeyStoreManagerUtils.savePreferenceData(
324-
KeyStoreManagerUtils.IV_KEY,
325-
shareMetadata.iv
326-
);
327-
328-
KeyStoreManagerUtils.savePreferenceData(
329-
KeyStoreManagerUtils.MAC,
330-
shareMetadata.mac
331-
);
332-
333321
var aes256cbc = new AES256CBC(
334322
sessionId,
335323
shareMetadata.ephemPublicKey,
@@ -367,59 +355,59 @@ private void sessionTimeOutAPI()
367355
string sessionId = KeyStoreManagerUtils.getPreferencesData(KeyStoreManagerUtils.SESSION_ID);
368356
if (!string.IsNullOrEmpty(sessionId))
369357
{
370-
var ephemKey = KeyStoreManagerUtils.getPreferencesData(KeyStoreManagerUtils.EPHEM_PUBLIC_Key);
371-
var ivKey = KeyStoreManagerUtils.getPreferencesData(KeyStoreManagerUtils.IV_KEY);
372-
var mac = KeyStoreManagerUtils.getPreferencesData(KeyStoreManagerUtils.MAC);
373-
374-
if (string.IsNullOrEmpty(ephemKey) == true && string.IsNullOrEmpty(ivKey) == true) return;
375-
376-
var aes256cbc = new AES256CBC(
377-
sessionId,
378-
ephemKey,
379-
ivKey
380-
);
381-
382-
383-
var encryptedData = aes256cbc.encrypt(System.Text.Encoding.UTF8.GetBytes(""));
384-
var encryptedMetadata = new ShareMetadata()
358+
var pubKey = KeyStoreManagerUtils.getPubKey(sessionId);
359+
StartCoroutine(Web3AuthApi.getInstance().authorizeSession(pubKey, (response =>
385360
{
386-
iv = ivKey,
387-
ephemPublicKey = ephemKey,
388-
ciphertext = encryptedData,
389-
mac = mac
390-
};
391-
var jsonData = JsonConvert.SerializeObject(encryptedMetadata);
392-
393-
StartCoroutine(Web3AuthApi.getInstance().logout(
394-
new LogoutApiRequest()
361+
if (response != null)
395362
{
396-
key = KeyStoreManagerUtils.getPubKey(sessionId),
397-
data = jsonData,
398-
signature = KeyStoreManagerUtils.getECDSASignature(
363+
var shareMetadata = Newtonsoft.Json.JsonConvert.DeserializeObject<ShareMetadata>(response.message);
364+
365+
var aes256cbc = new AES256CBC(
399366
sessionId,
400-
jsonData
401-
),
402-
timeout = 1
403-
}, result =>
404-
{
405-
if (result != null)
367+
shareMetadata.ephemPublicKey,
368+
shareMetadata.iv
369+
);
370+
371+
var encryptedData = aes256cbc.encrypt(System.Text.Encoding.UTF8.GetBytes(""));
372+
var encryptedMetadata = new ShareMetadata()
406373
{
407-
try
374+
iv = shareMetadata.iv,
375+
ephemPublicKey = shareMetadata.ephemPublicKey,
376+
ciphertext = encryptedData,
377+
mac = shareMetadata.mac
378+
};
379+
var jsonData = JsonConvert.SerializeObject(encryptedMetadata);
380+
381+
StartCoroutine(Web3AuthApi.getInstance().logout(
382+
new LogoutApiRequest()
408383
{
409-
KeyStoreManagerUtils.deletePreferencesData(KeyStoreManagerUtils.EPHEM_PUBLIC_Key);
410-
KeyStoreManagerUtils.deletePreferencesData(KeyStoreManagerUtils.IV_KEY);
411-
KeyStoreManagerUtils.deletePreferencesData(KeyStoreManagerUtils.MAC);
412-
KeyStoreManagerUtils.deletePreferencesData(KeyStoreManagerUtils.SESSION_ID);
413-
KeyStoreManagerUtils.deletePreferencesData(web3AuthOptions.loginConfig?.Values.First()?.verifier);
414-
}
415-
catch (Exception ex)
384+
key = KeyStoreManagerUtils.getPubKey(sessionId),
385+
data = jsonData,
386+
signature = KeyStoreManagerUtils.getECDSASignature(
387+
sessionId,
388+
jsonData
389+
),
390+
timeout = 1
391+
}, result =>
416392
{
417-
Debug.LogError(ex.Message);
393+
if (result != null)
394+
{
395+
try
396+
{
397+
KeyStoreManagerUtils.deletePreferencesData(KeyStoreManagerUtils.SESSION_ID);
398+
KeyStoreManagerUtils.deletePreferencesData(web3AuthOptions.loginConfig?.Values.First()?.verifier);
399+
400+
this.Enqueue(() => this.onLogout?.Invoke());
401+
}
402+
catch (Exception ex)
403+
{
404+
Debug.LogError(ex.Message);
405+
}
406+
}
418407
}
419-
}
408+
));
420409
}
421-
));
422-
410+
})));
423411
}
424412
}
425413

0 commit comments

Comments
 (0)