diff --git a/app/build.gradle b/app/build.gradle index 0202283f..a65a1c52 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -31,7 +31,7 @@ android { buildTypes { release { - minifyEnabled true + minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' signingConfig signingConfigs.debug } @@ -62,6 +62,11 @@ dependencies { // Web3Auth implementation project(":core") + api 'io.jsonwebtoken:jjwt-api:0.11.5' + runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5' + runtimeOnly('io.jsonwebtoken:jjwt-orgjson:0.11.5') { + exclude group: 'org.json', module: 'json' //provided by Android natively + } // Test testImplementation 'junit:junit:4.13.2' diff --git a/app/src/main/java/com/web3auth/app/AuthConnectionLogin.kt b/app/src/main/java/com/web3auth/app/AuthConnectionLogin.kt new file mode 100644 index 00000000..2a917d75 --- /dev/null +++ b/app/src/main/java/com/web3auth/app/AuthConnectionLogin.kt @@ -0,0 +1,8 @@ +package com.web3auth.app + +import com.web3auth.core.types.AuthConnection + +data class AuthConnectionLogin( + val name: String, + val authConnection: AuthConnection +) \ No newline at end of file diff --git a/app/src/main/java/com/web3auth/app/LoginVerifier.kt b/app/src/main/java/com/web3auth/app/LoginVerifier.kt deleted file mode 100644 index 983a4911..00000000 --- a/app/src/main/java/com/web3auth/app/LoginVerifier.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.web3auth.app - -import com.web3auth.core.types.Provider - -data class LoginVerifier( - val name: String, - val loginProvider: Provider -) \ No newline at end of file diff --git a/app/src/main/java/com/web3auth/app/MainActivity.kt b/app/src/main/java/com/web3auth/app/MainActivity.kt index 6032b162..a7e351b7 100644 --- a/app/src/main/java/com/web3auth/app/MainActivity.kt +++ b/app/src/main/java/com/web3auth/app/MainActivity.kt @@ -1,7 +1,6 @@ package com.web3auth.app import android.content.Intent -import android.net.Uri import android.os.Bundle import android.text.method.ScrollingMovementMethod import android.util.Log @@ -21,83 +20,113 @@ import com.google.gson.JsonArray import com.web3auth.core.Web3Auth import com.web3auth.core.isEmailValid import com.web3auth.core.isPhoneNumberValid +import com.web3auth.core.types.AuthConnection +import com.web3auth.core.types.AuthConnectionConfig import com.web3auth.core.types.BuildEnv -import com.web3auth.core.types.ChainConfig -import com.web3auth.core.types.ChainNamespace -import com.web3auth.core.types.ExtraLoginOptions import com.web3auth.core.types.Language -import com.web3auth.core.types.LoginConfigItem import com.web3auth.core.types.LoginParams -import com.web3auth.core.types.MFALevel -import com.web3auth.core.types.Network -import com.web3auth.core.types.Provider import com.web3auth.core.types.ThemeModes -import com.web3auth.core.types.TypeOfLogin import com.web3auth.core.types.UserInfo +import com.web3auth.core.types.WalletServicesConfig import com.web3auth.core.types.Web3AuthOptions import com.web3auth.core.types.Web3AuthResponse import com.web3auth.core.types.WhiteLabelData import org.json.JSONObject +import org.torusresearch.fetchnodedetails.types.Web3AuthNetwork import org.web3j.crypto.Credentials import java.util.concurrent.CompletableFuture class MainActivity : AppCompatActivity(), AdapterView.OnItemClickListener { private lateinit var web3Auth: Web3Auth - private val verifierList: List = listOf( - LoginVerifier("Google", Provider.GOOGLE), - LoginVerifier("Facebook", Provider.FACEBOOK), - LoginVerifier("Twitch", Provider.TWITCH), - LoginVerifier("Discord", Provider.DISCORD), - LoginVerifier("Reddit", Provider.REDDIT), - LoginVerifier("Apple", Provider.APPLE), - LoginVerifier("Github", Provider.GITHUB), - LoginVerifier("LinkedIn", Provider.LINKEDIN), - LoginVerifier("Twitter", Provider.TWITTER), - LoginVerifier("Line", Provider.LINE), - LoginVerifier("Hosted Email Passwordless", Provider.EMAIL_PASSWORDLESS), - LoginVerifier("SMS Passwordless", Provider.SMS_PASSWORDLESS), - LoginVerifier("JWT", Provider.JWT), - LoginVerifier("Farcaster", Provider.FARCASTER) + private val authConnectionList: List = listOf( + AuthConnectionLogin("Google", AuthConnection.GOOGLE), + AuthConnectionLogin("Facebook", AuthConnection.FACEBOOK), + AuthConnectionLogin("Twitch", AuthConnection.TWITCH), + AuthConnectionLogin("Discord", AuthConnection.DISCORD), + AuthConnectionLogin("Reddit", AuthConnection.REDDIT), + AuthConnectionLogin("Apple", AuthConnection.APPLE), + AuthConnectionLogin("Github", AuthConnection.GITHUB), + AuthConnectionLogin("LinkedIn", AuthConnection.LINKEDIN), + AuthConnectionLogin("Twitter", AuthConnection.TWITTER), + AuthConnectionLogin("Line", AuthConnection.LINE), + AuthConnectionLogin("Hosted Email Passwordless", AuthConnection.EMAIL_PASSWORDLESS), + AuthConnectionLogin("SMS Passwordless", AuthConnection.SMS_PASSWORDLESS), + AuthConnectionLogin("CUSTOM", AuthConnection.CUSTOM), + AuthConnectionLogin("Farcaster", AuthConnection.FARCASTER) ) - private var selectedLoginProvider: Provider = Provider.GOOGLE + private var selectedLoginProvider: AuthConnection = AuthConnection.GOOGLE private val gson = Gson() + private var TEST_VERIFIER = "torus-test-health" + private var TORUS_TEST_EMAIL = "devnettestuser@tor.us" + var TEST_AGGREGRATE_VERIFIER = "torus-aggregate-sapphire-mainnet" private fun signIn() { val hintEmailEditText = findViewById(R.id.etEmailHint) - var extraLoginOptions: ExtraLoginOptions? = null - if (selectedLoginProvider == Provider.EMAIL_PASSWORDLESS) { + var loginHint: String? = null + if (selectedLoginProvider == AuthConnection.EMAIL_PASSWORDLESS) { val hintEmail = hintEmailEditText.text.toString() if (hintEmail.isBlank() || !hintEmail.isEmailValid()) { Toast.makeText(this, "Please enter a valid Email.", Toast.LENGTH_LONG).show() return } - extraLoginOptions = ExtraLoginOptions(login_hint = hintEmail) + loginHint = hintEmail } - if (selectedLoginProvider == Provider.SMS_PASSWORDLESS) { + if (selectedLoginProvider == AuthConnection.SMS_PASSWORDLESS) { val hintPhNo = hintEmailEditText.text.toString() if (hintPhNo.isBlank() || !hintPhNo.isPhoneNumberValid()) { Toast.makeText(this, "Please enter a valid Number.", Toast.LENGTH_LONG).show() return } - extraLoginOptions = ExtraLoginOptions(login_hint = hintPhNo) + loginHint = hintPhNo } - val loginCompletableFuture: CompletableFuture = web3Auth.login( + val loginCompletableFuture: CompletableFuture = web3Auth.connectTo( LoginParams( selectedLoginProvider, - extraLoginOptions = extraLoginOptions, - mfaLevel = MFALevel.OPTIONAL + //authConnectionId = "w3ads", + //groupedAuthConnectionId = "aggregate-mobile", + loginHint = loginHint, ) ) loginCompletableFuture.whenComplete { _, error -> if (error == null) { reRender() - println("PrivKey: " + web3Auth.getPrivkey()) - println("ed25519PrivKey: " + web3Auth.getEd25519PrivKey()) + println("PrivKey: " + web3Auth.getPrivateKey()) + println("ed25519PrivKey: " + web3Auth.getEd25519PrivateKey()) + println("Web3Auth UserInfo" + web3Auth.getUserInfo()) + } else { + Log.d("MainActivity_Web3Auth", error.message ?: "Something went wrong") + } + } + } + + private fun sfaSignIn() { + val idToken = "" //JwtUtils.generateIdToken(TORUS_TEST_EMAIL) + val web3AuthOptions = + Web3AuthOptions( + clientId = "YOUR_CLIENT_ID", + web3AuthNetwork = Web3AuthNetwork.SAPPHIRE_MAINNET, + redirectUrl = "torusapp://org.torusresearch.web3authexample", + ) + web3Auth = Web3Auth( + web3AuthOptions, this + ) + val loginCompletableFuture: CompletableFuture = web3Auth.connectTo( + LoginParams( + authConnection = selectedLoginProvider, + authConnectionId = TEST_VERIFIER, + idToken = idToken, + groupedAuthConnectionId = TEST_AGGREGRATE_VERIFIER, + ) + ) + loginCompletableFuture.whenComplete { _, error -> + if (error == null) { + reRender() + println("PrivKey: " + web3Auth.getPrivateKey()) println("Web3Auth UserInfo" + web3Auth.getUserInfo()) } else { Log.d("MainActivity_Web3Auth", error.message ?: "Something went wrong") @@ -119,17 +148,18 @@ class MainActivity : AppCompatActivity(), AdapterView.OnItemClickListener { private fun reRender() { val contentTextView = findViewById(R.id.contentTextView) val signInButton = findViewById