diff --git a/docs/migration-guides/sfa-android-v2-to-v3.mdx b/docs/migration-guides/sfa-android-v2-to-v3.mdx
new file mode 100644
index 000000000..8f0c2dee3
--- /dev/null
+++ b/docs/migration-guides/sfa-android-v2-to-v3.mdx
@@ -0,0 +1,45 @@
+---
+title: SFA Android SDK - v2.0.0 to v3.0.0
+description: "SFA Android SDK - v2.0.0 to v3.0.0 | Documentation - Web3Auth"
+sidebar_label: v2.0.0 to v3.0.0
+---
+
+This migration guide provides steps for upgrading from version v2.0.0 to v3.0.0 of the SFA Android
+SDK. The guide outlines significant changes and enhancements.
+
+## Breaking Changes
+
+### initialize Method Changes
+
+In v3, the `initialize` method will now return void upon successful initialization instead of
+returning `SessionData`. After successful initialization, you can use the
+[getSessionData](/docs/sdk/sfa/sfa-android/usage/#get-session-data) method to check if the user is
+logged in or not.
+
+```kotlin
+val initializeCF = singleFactoreAuth.initialize(this.applicationContext)
+
+// remove-next-line
+initializeCF.whenComplete { sessionData, error ->
+// add-next-line
+initializeCF.whenComplete {_, error ->
+ if (error != null) {
+ // Handle error
+ }
+ // remove-start
+ else if (sessionData != null) {
+ // User is logged in
+ } else {
+ // User is not logged in
+ }
+ // remove-end
+ // add-start
+ let sessionData = singleFactorAuth.getSessionData()
+ if(sessionData != null) {
+ // User is logged in
+ } else {
+ // User is not logged in
+ }
+ // add-end
+}
+```
diff --git a/docs/sdk/sfa/sfa-android/initialize.mdx b/docs/sdk/sfa/sfa-android/initialize.mdx
index 56825e1ab..4a8b3cc6d 100644
--- a/docs/sdk/sfa/sfa-android/initialize.mdx
+++ b/docs/sdk/sfa/sfa-android/initialize.mdx
@@ -7,8 +7,8 @@ description: "Web3Auth Single Factor Auth Android SDK - Initialize | Documentati
import TabItem from "@theme/TabItem";
import Tabs from "@theme/Tabs";
+import Instantiation from "@site/src/common/sdk/sfa/android/_sfa-android-instantiation.mdx";
import Initialization from "@site/src/common/sdk/sfa/android/_sfa-android-initialization.mdx";
-import SessionManagement from "@site/src/common/sdk/sfa/android/_sfa-android-session-management.mdx";
Once you have installed the Web3Auth SDK, the next crucial step is to initialize it. This step
requires passing various parameters that align with your project preferences. It's important to note
@@ -29,13 +29,12 @@ Web3Auth network, client id, and other parameters during initialization.
## Create Instance
-
+
## Initialize
-To initialize the SDK, you can use the `initialize` method. We have included Session Management in
-this SDK, so you can use the method to get the `SessionData` without re-logging in the user. If a
-user has an active session, it will return the `SessionData`, otherwise, it will throw an error for
-inactive session.
+To initialize the SDK, you can use the `initialize` method. This method helps you initialize the SDK
+with existing session. After successful initialization, you can use the
+[getSessionData](./usage/#get-session-data) method to check if the user is logged in or not.
-
+
diff --git a/sidebars.ts b/sidebars.ts
index ad30722a2..627fef2bf 100644
--- a/sidebars.ts
+++ b/sidebars.ts
@@ -1647,6 +1647,7 @@ const sidebars: SidebarsConfig = {
type: "category",
label: "Migration Guides",
items: [
+ "migration-guides/sfa-android-v2-to-v3",
"migration-guides/sfa-android-v1.2.0-to-v2.0.0",
"migration-guides/sfa-android-v0.4.0-to-v1",
"migration-guides/sfa-android-v0.1.0-to-v0.3.0",
diff --git a/src/common/sdk/sfa/android/_sfa-android-initialization.mdx b/src/common/sdk/sfa/android/_sfa-android-initialization.mdx
index d7fa04268..f0f88757e 100644
--- a/src/common/sdk/sfa/android/_sfa-android-initialization.mdx
+++ b/src/common/sdk/sfa/android/_sfa-android-initialization.mdx
@@ -1,16 +1,16 @@
```kotlin
import android.content.Context
-import com.web3auth.singlefactorauth.SingleFactorAuth
-import com.web3auth.singlefactorauth.types.Web3AuthOptions
-import org.torusresearch.fetchnodedetails.types.Web3AuthNetwork
-
-// You can get the client id for your Web3Auth project from Web3Auth dashboard.
-val web3AuthOptions = Web3AuthOptions(
- "YOUR_WEB3AUTH_CLIENT_ID",
- Web3AuthNetwork.SAPPHIRE_MAINNET
-)
val context: Context = "YOUR_APPLICATION_CONTEXT"
+val sessionDataCF = singleFactorAuth.initialize(context)
-val singleFactorAuth = SingleFactorAuth(web3AuthOptions, context)
+sessionDataCF.whenComplete {sessionData, error ->
+ if(error != null) {
+ // Something went wrong
+ // Initiate the login flow again
+ } else {
+ // You can use the SessionData to check if the user is
+ //logged in or not
+ }
+}
```
diff --git a/src/common/sdk/sfa/android/_sfa-android-instantiation.mdx b/src/common/sdk/sfa/android/_sfa-android-instantiation.mdx
new file mode 100644
index 000000000..d7fa04268
--- /dev/null
+++ b/src/common/sdk/sfa/android/_sfa-android-instantiation.mdx
@@ -0,0 +1,16 @@
+```kotlin
+import android.content.Context
+import com.web3auth.singlefactorauth.SingleFactorAuth
+import com.web3auth.singlefactorauth.types.Web3AuthOptions
+import org.torusresearch.fetchnodedetails.types.Web3AuthNetwork
+
+// You can get the client id for your Web3Auth project from Web3Auth dashboard.
+val web3AuthOptions = Web3AuthOptions(
+ "YOUR_WEB3AUTH_CLIENT_ID",
+ Web3AuthNetwork.SAPPHIRE_MAINNET
+)
+
+val context: Context = "YOUR_APPLICATION_CONTEXT"
+
+val singleFactorAuth = SingleFactorAuth(web3AuthOptions, context)
+```
diff --git a/src/common/sdk/sfa/android/_sfa-android-session-management.mdx b/src/common/sdk/sfa/android/_sfa-android-session-management.mdx
deleted file mode 100644
index d3a5f9e3a..000000000
--- a/src/common/sdk/sfa/android/_sfa-android-session-management.mdx
+++ /dev/null
@@ -1,20 +0,0 @@
-```kotlin
-import android.content.Context
-
-val context: Context = "YOUR_APPLICATION_CONTEXT"
-val sessionDataCF = singleFactorAuth.initialize(context)
-
-sessionDataCF.whenComplete {sessionData, error ->
- if(error != null) {
- // Session is no longer valid, or something went wrong
- // Initiate the login flow again
- } else if(sessionData == null) {
- // No active session found
- } else {
- // Session is present
- // You can use the sessionData to get the public address, private key,
- // userInfo, and signatures.
- Log.i("Public address", sessionData.publicAddress)
- }
-}
-```
diff --git a/src/common/versions.ts b/src/common/versions.ts
index fe3f45314..2c7509ffa 100644
--- a/src/common/versions.ts
+++ b/src/common/versions.ts
@@ -7,7 +7,7 @@ export const pnpUnityVersion = `5.x.x`;
export const pnpUnrealVersion = `4.1.x`;
export const sfaWebVersion = `9.2.x`;
-export const sfaAndroidVersion = `2.1.0`;
+export const sfaAndroidVersion = `3.0.0`;
export const sfaIOSVersion = `9.0.2`;
export const sfaRNVersion = `2.0.x`;
export const sfaFlutterVersion = `5.2.0`;
diff --git a/src/pages/guides/sfa-android-firebase.mdx b/src/pages/guides/sfa-android-firebase.mdx
index 08626af6d..9e37f022f 100644
--- a/src/pages/guides/sfa-android-firebase.mdx
+++ b/src/pages/guides/sfa-android-firebase.mdx
@@ -16,8 +16,8 @@ import TabItem from "@theme/TabItem";
import Tabs from "@theme/Tabs";
import Install from "@site/src/common/sdk/sfa/android/_sfa-android-install.mdx";
+import Instantiation from "@site/src/common/sdk/sfa/android/_sfa-android-instantiation.mdx";
import Initialization from "@site/src/common/sdk/sfa/android/_sfa-android-initialization.mdx";
-import SessionManagement from "@site/src/common/sdk/sfa/android/_sfa-android-session-management.mdx";
-
-### Session Management
+
-To check whether the user is authenticated, you can use the `initialize` method. For a user already
-authenticated, the result would be a non-nullable `SFAKey`. You can navigate to different views
-based on the result.
+Once you have successfully instantiated `SingleFactorAuth`, you can use the `initialize` method to
+initialize the SDK with existing valid session.
-
+
### Authentication
If the user is not authenticated, you should utilize the `connect` method. For the guide, we will
add Email Password login using Firebase. The `connect` method is pretty straightforward in
SingleFactorAuth and takes `LoginParams` as input. After successfully logging in, the method will
-return the `SFAKey`.
+return the `SessionData`.
Learn more about [SingleFactorAuth LoginParams](/docs/sdk/sfa/sfa-android/usage#parameters). To more
about Firebase login methods, please
@@ -131,8 +128,8 @@ auth.signInWithEmailAndPassword("android@firebase.com", "Android@Web3Auth")
)
try {
- // Save the SFAKey for future use to interact with Blockchain.
- sfaKey = singleFactorAuth.connect(
+ // Save the SessionData for future use to interact with Blockchain.
+ sessionData = singleFactorAuth.connect(
loginParams,
this.applicationContext,
86400
@@ -145,7 +142,7 @@ auth.signInWithEmailAndPassword("android@firebase.com", "Android@Web3Auth")
e.printStackTrace()
}
- publicAddress = sfaKey?.publicAddress.toString()
+ publicAddress =sessionData?.publicAddress.toString()
println("""Private Key: ${sfaKey?.privateKey?.toString(16)}""".trimIndent())
println("""Public Address: $publicAddress""".trimIndent())