|
|
|
@ -41,8 +41,7 @@ import javax.inject.Inject
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Demonstrates the usage of the AppAuth to authorize a user with an OAuth2 / OpenID Connect
|
|
|
|
* Demonstrates the usage of the AppAuth to authorize a user with an OAuth2 / OpenID Connect
|
|
|
|
* provider. Based on the configuration provided in `res/raw/auth_config.json`, the code
|
|
|
|
* provider
|
|
|
|
* contained here will:
|
|
|
|
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* - Retrieve an OpenID Connect discovery document for the provider, or use a local static
|
|
|
|
* - Retrieve an OpenID Connect discovery document for the provider, or use a local static
|
|
|
|
* configuration.
|
|
|
|
* configuration.
|
|
|
|
@ -51,9 +50,8 @@ import javax.inject.Inject
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@AndroidEntryPoint
|
|
|
|
@AndroidEntryPoint
|
|
|
|
class SignInActivity : InjectingAppCompatActivity(), PurchaseDialog.PurchaseHandler {
|
|
|
|
class SignInActivity : InjectingAppCompatActivity(), PurchaseDialog.PurchaseHandler {
|
|
|
|
@Inject lateinit var authService: AuthorizationService
|
|
|
|
@Inject lateinit var authorizationServiceProvider: AuthorizationServiceProvider
|
|
|
|
@Inject lateinit var authStateManager: AuthStateManager
|
|
|
|
@Inject lateinit var authStateManager: AuthStateManager
|
|
|
|
@Inject lateinit var configuration: Configuration
|
|
|
|
|
|
|
|
@Inject lateinit var themeColor: ThemeColor
|
|
|
|
@Inject lateinit var themeColor: ThemeColor
|
|
|
|
@Inject lateinit var inventory: Inventory
|
|
|
|
@Inject lateinit var inventory: Inventory
|
|
|
|
|
|
|
|
|
|
|
|
@ -65,11 +63,17 @@ class SignInActivity : InjectingAppCompatActivity(), PurchaseDialog.PurchaseHand
|
|
|
|
private var mAuthIntentLatch = CountDownLatch(1)
|
|
|
|
private var mAuthIntentLatch = CountDownLatch(1)
|
|
|
|
private val mExecutor: ExecutorService = newSingleThreadExecutor()
|
|
|
|
private val mExecutor: ExecutorService = newSingleThreadExecutor()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lateinit var authService: AuthorizationService
|
|
|
|
|
|
|
|
lateinit var configuration: Configuration
|
|
|
|
|
|
|
|
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
|
super.onCreate(savedInstanceState)
|
|
|
|
super.onCreate(savedInstanceState)
|
|
|
|
|
|
|
|
|
|
|
|
viewModel.error.observe(this, this::handleError)
|
|
|
|
viewModel.error.observe(this, this::handleError)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
authService = authorizationServiceProvider.google
|
|
|
|
|
|
|
|
configuration = authService.configuration
|
|
|
|
|
|
|
|
|
|
|
|
if (authStateManager.current.isAuthorized &&
|
|
|
|
if (authStateManager.current.isAuthorized &&
|
|
|
|
!configuration.hasConfigurationChanged()) {
|
|
|
|
!configuration.hasConfigurationChanged()) {
|
|
|
|
Timber.i("User is already authenticated, signing out")
|
|
|
|
Timber.i("User is already authenticated, signing out")
|
|
|
|
@ -155,7 +159,7 @@ class SignInActivity : InjectingAppCompatActivity(), PurchaseDialog.PurchaseHand
|
|
|
|
// if we are not using discovery, build the authorization service configuration directly
|
|
|
|
// if we are not using discovery, build the authorization service configuration directly
|
|
|
|
// from the static configuration values.
|
|
|
|
// from the static configuration values.
|
|
|
|
if (configuration.discoveryUri == null) {
|
|
|
|
if (configuration.discoveryUri == null) {
|
|
|
|
Timber.i("Creating auth config from res/raw/auth_config.json")
|
|
|
|
Timber.i("Creating auth config")
|
|
|
|
val config = AuthorizationServiceConfiguration(
|
|
|
|
val config = AuthorizationServiceConfiguration(
|
|
|
|
configuration.authEndpointUri!!,
|
|
|
|
configuration.authEndpointUri!!,
|
|
|
|
configuration.tokenEndpointUri!!,
|
|
|
|
configuration.tokenEndpointUri!!,
|
|
|
|
|