Skip to content

Commit 293c666

Browse files
committed
-Added init for injecting client id and authority into the intent
-Removed adding flat ussername as it's not yet merged into MSAL so build fails -update to attributeName as that's the correct value
1 parent 9bb8332 commit 293c666

4 files changed

Lines changed: 29 additions & 9 deletions

File tree

app/src/main/java/com/azuresamples/msalnativeauthandroidkotlinsampleapp/AuthClient.kt

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,47 @@ import android.util.Log
66
import com.microsoft.identity.client.Logger
77
import com.microsoft.identity.client.PublicClientApplication
88
import com.microsoft.identity.nativeauth.INativeAuthPublicClientApplication
9+
import com.microsoft.identity.nativeauth.NativeAuthPublicClientApplicationParameters
910

1011
object AuthClient : Application() {
1112
private lateinit var authClient: INativeAuthPublicClientApplication
1213

14+
const val EXTRA_CLIENT_ID = "native_auth_client_id"
15+
const val EXTRA_AUTHORITY_URL = "native_auth_authority_url"
16+
1317
@JvmStatic
1418
fun getAuthClient(): INativeAuthPublicClientApplication {
1519
return authClient
1620
}
1721

22+
// Initialize the auth client with the provided clientId and authorityUrl, or with the default config file if they are not provided.
1823
@JvmStatic
19-
fun initialize(context: Context) {
24+
fun initialize(context: Context, clientId: String? = null, authorityUrl: String? = null) {
2025
Logger.getInstance().setExternalLogger { tag, logLevel, message, containsPII ->
2126
Log.e(
2227
"MSAL",
2328
"$tag $logLevel $message"
2429
)
2530
}
2631

27-
authClient = PublicClientApplication.createNativeAuthPublicClientApplication(
28-
context,
29-
R.raw.auth_config_native_auth
30-
)
32+
// If clientId and authorityUrl are provided, create the auth client with the provided values. Otherwise, create the auth client with the default config file.
33+
if (clientId != null && authorityUrl != null) {
34+
val parameters = NativeAuthPublicClientApplicationParameters(
35+
clientId = clientId,
36+
authorityUrl = authorityUrl,
37+
challengeTypes = listOf("oob", "password")
38+
)
39+
parameters.capabilities = listOf("mfa_required", "registration_required")
40+
41+
authClient = PublicClientApplication.createNativeAuthPublicClientApplication(
42+
context,
43+
parameters
44+
)
45+
} else {
46+
authClient = PublicClientApplication.createNativeAuthPublicClientApplication(
47+
context,
48+
R.raw.auth_config_native_auth
49+
)
50+
}
3151
}
3252
}

app/src/main/java/com/azuresamples/msalnativeauthandroidkotlinsampleapp/MainActivity.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ class MainActivity : AppCompatActivity() {
1818
val binding = ActivityMainBinding.inflate(layoutInflater)
1919
setContentView(binding.root)
2020

21-
AuthClient.initialize(this@MainActivity)
21+
val clientId = intent.getStringExtra(AuthClient.EXTRA_CLIENT_ID)
22+
val authorityUrl = intent.getStringExtra(AuthClient.EXTRA_AUTHORITY_URL)
23+
AuthClient.initialize(this@MainActivity, clientId, authorityUrl)
2224

2325
val emailSignInSignUpFragment = EmailSignInSignUpFragment()
2426
val emailPasswordSignInSignUpFragment = EmailPasswordSignInSignUpFragment()

app/src/main/java/com/azuresamples/msalnativeauthandroidkotlinsampleapp/SignUpAttributesFragment.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,8 @@ class SignUpAttributesFragment : Fragment() {
5656

5757
private fun submitAttributes() {
5858
CoroutineScope(Dispatchers.Main).launch {
59-
val username = binding.usernameText.text.toString()
6059

6160
val attributes = UserAttributes.Builder()
62-
.flatUsername(username)
6361
.build()
6462

6563
val actionResult = currentState.submitAttributes(attributes)

app/src/main/java/com/azuresamples/msalnativeauthandroidkotlinsampleapp/SignUpCodeFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ class SignUpCodeFragment : Fragment() {
7272
is SignUpResult.AttributesRequired -> {
7373
// Custom implementation for Flat Username / Alias
7474
if (actionResult.requiredAttributes.size == 1 &&
75-
actionResult.requiredAttributes.any { it.name == "flatusername" }
75+
actionResult.requiredAttributes.any { it.attributeName == "flatusername" }
7676
) {
7777
navigateToAttributes(
7878
nextState = actionResult.nextState

0 commit comments

Comments
 (0)