1+ package com.salesforce.androidsdk.test
2+
3+ import android.content.Intent
4+ import android.content.Intent.FLAG_ACTIVITY_NEW_TASK
5+ import android.os.Bundle
6+ import android.util.Log
7+ import androidx.appcompat.app.AppCompatActivity
8+ import com.salesforce.androidsdk.accounts.UserAccountBuilder
9+ import com.salesforce.androidsdk.accounts.UserAccountManager.USER_SWITCH_TYPE_DEFAULT
10+ import com.salesforce.androidsdk.accounts.UserAccountManager.USER_SWITCH_TYPE_FIRST_LOGIN
11+ import com.salesforce.androidsdk.accounts.UserAccountManager.USER_SWITCH_TYPE_LOGIN
12+ import com.salesforce.androidsdk.app.SalesforceSDKManager
13+ import com.salesforce.androidsdk.rest.ClientManager.AccMgrAuthTokenProvider
14+ import com.salesforce.androidsdk.util.test.TestCredentials
15+
16+ class TestAuthentication : AppCompatActivity () {
17+
18+ override fun onCreate (savedInstanceState : Bundle ? ) {
19+ super .onCreate(savedInstanceState)
20+
21+ val creds = intent.getStringExtra(" creds" ) ? : return
22+ TestCredentials .init (creds, this )
23+
24+ val account = UserAccountBuilder .getInstance()
25+ .refreshToken(TestCredentials .REFRESH_TOKEN )
26+ .instanceServer(TestCredentials .INSTANCE_URL )
27+ .idUrl(TestCredentials .IDENTITY_URL )
28+ .orgId(TestCredentials .ORG_ID )
29+ .userId(TestCredentials .USER_ID )
30+ .communityUrl(TestCredentials .COMMUNITY_URL )
31+ .accountName(TestCredentials .ACCOUNT_NAME )
32+ .clientId(TestCredentials .CLIENT_ID )
33+ .photoUrl(TestCredentials .PHOTO_URL )
34+ .language(TestCredentials .LANGUAGE )
35+ .locale(TestCredentials .LOCALE )
36+ .loginServer(TestCredentials .LOGIN_URL )
37+ .authToken(" nothing yet" )
38+ .firstName(" user" )
39+ .lastName(" test" )
40+ .displayName(" test user" )
41+ .username(" username" )
42+ .build()
43+
44+ val authTokenProvider = AccMgrAuthTokenProvider (
45+ SalesforceSDKManager .getInstance().clientManager,
46+ TestCredentials .INSTANCE_URL , null , TestCredentials .REFRESH_TOKEN
47+ )
48+ authTokenProvider.newAuthToken
49+ account.downloadProfilePhoto()
50+
51+ val userAccountManager = SalesforceSDKManager .getInstance().userAccountManager
52+ // Send User Switch Intent, create user and switch to user.
53+ val numAuthenticatedUsers = userAccountManager.authenticatedUsers?.size ? : 0
54+ val userSwitchType = when {
55+ // We've already authenticated the first user, so there should be one
56+ numAuthenticatedUsers == 1 -> USER_SWITCH_TYPE_FIRST_LOGIN
57+
58+ // Otherwise we're logging in with an additional user
59+ numAuthenticatedUsers > 1 -> USER_SWITCH_TYPE_LOGIN
60+
61+ // This should never happen but if it does, pass in the "unknown" value
62+ else -> USER_SWITCH_TYPE_DEFAULT
63+ }
64+ userAccountManager.sendUserSwitchIntent(userSwitchType, null )
65+ userAccountManager.createAccount(account)
66+ userAccountManager.switchToUser(account)
67+
68+ startActivity(Intent (this , SalesforceSDKManager .getInstance().mainActivityClass).apply {
69+ setPackage(SalesforceSDKManager .getInstance().appContext.packageName)
70+ flags = FLAG_ACTIVITY_NEW_TASK
71+ })
72+ }
73+ }
0 commit comments