@@ -106,8 +106,14 @@ abstract class BaseLoginSignInActivity : BaseCanvasActivity(), OnAuthenticationS
106106
107107 companion object {
108108 const val ACCOUNT_DOMAIN = " accountDomain"
109- const val SUCCESS_URL = " /canvas/login?code="
110- const val ERROR_URL = " /canvas/login?error=access_denied"
109+ val SUCCESS_URL_COLLECTION = listOf (
110+ " /canvas/login?code=" , // success url
111+ " login/oauth2/auth?code=" // legacy success url (needed for the fallback redirect_uri)
112+ )
113+ val ERROR_URL_COLLECTION = listOf (
114+ " /canvas/login?error=access_denied" , // error url
115+ " /login/oauth2/auth?error=access_denied" // legacy error url (needed for the fallback redirect_uri)
116+ )
111117
112118 init {
113119 AppCompatDelegate .setCompatVectorFromResourcesEnabled(true )
@@ -240,13 +246,14 @@ abstract class BaseLoginSignInActivity : BaseCanvasActivity(), OnAuthenticationS
240246 private fun handleShouldOverrideUrlLoading (view : WebView , url : String ): Boolean {
241247 if (overrideUrlLoading(view, url)) return true
242248 return when {
243- url.contains(SUCCESS_URL ) -> {
249+ SUCCESS_URL_COLLECTION .any { url.contains(it) } -> {
250+ val responseUrl = SUCCESS_URL_COLLECTION .first { url.contains(it) }
244251 domain = accountDomain.domain!!
245- val oAuthRequest = url.substring(url.indexOf(SUCCESS_URL ) + SUCCESS_URL .length)
252+ val oAuthRequest = url.substring(url.indexOf(responseUrl ) + responseUrl .length)
246253 getToken(clientId, clientSecret, oAuthRequest, mGetTokenCallback)
247254 true
248255 }
249- url.contains(ERROR_URL ) -> {
256+ ERROR_URL_COLLECTION .any { url.contains(it) } -> {
250257 clearCookies()
251258 loadUrl(view, authenticationURL, headers)
252259 true
0 commit comments