+ \r
+ } else if (operation instanceof GetOAuth2AccessToken) {\r
+\r
+ try {\r
+ dismissDialog(OAUTH2_LOGIN_PROGRESS);\r
+ } catch (IllegalArgumentException e) {\r
+ // NOTHING TO DO ; can't find out what situation that leads to the exception in this code, but user logs signal that it happens\r
+ }\r
+\r
+ if (result.isSuccess()) {\r
+ \r
+ /// time to test the retrieved access token on the ownCloud server\r
+ String url = ((TextView) findViewById(R.id.host_URL)).getText()\r
+ .toString().trim();\r
+ if (url.endsWith("/"))\r
+ url = url.substring(0, url.length() - 1);\r
+\r
+ Uri uri = null;\r
+ /*String webdav_path = AccountUtils.getWebdavPath(mDiscoveredVersion);\r
+ \r
+ if (webdav_path == null) {\r
+ onAuthenticationResult(false, getString(R.string.auth_bad_oc_version_title));\r
+ return;\r
+ }*/\r
+ \r
+ String prefix = "";\r
+ if (mIsSslConn) {\r
+ prefix = "https://";\r
+ } else {\r
+ prefix = "http://";\r
+ }\r
+ if (url.toLowerCase().startsWith("http://")\r
+ || url.toLowerCase().startsWith("https://")) {\r
+ prefix = "";\r
+ }\r
+ \r
+ try {\r
+ mBaseUrl = prefix + url;\r
+ //String url_str = prefix + url + webdav_path;\r
+ String url_str = prefix + url + "/remote.php/odav";\r
+ uri = Uri.parse(url_str);\r
+ \r
+ } catch (Exception e) {\r
+ // should never happen\r
+ onAuthenticationResult(false, getString(R.string.auth_incorrect_address_title));\r
+ return;\r
+ }\r
+\r
+ showDialog(DIALOG_LOGIN_PROGRESS);\r
+ String accessToken = ((GetOAuth2AccessToken)operation).getResultTokenMap().get(OAuth2Context.KEY_ACCESS_TOKEN);\r
+ Log.d(TAG, "ACCESS TOKEN: " + accessToken);\r
+ mAuthChkOperation = new ExistenceCheckOperation("", this, accessToken);\r
+ WebdavClient client = OwnCloudClientUtils.createOwnCloudClient(uri, getApplicationContext());\r
+ mAuthChkOperation.execute(client, this, mHandler);\r
+ \r
+ \r
+ } else {\r
+ TextView tv = (TextView) findViewById(R.id.oAuth_URL);\r
+ tv.setError("A valid authorization could not be obtained");\r
+\r
+ }\r
+ \r
+ } else if (operation instanceof ExistenceCheckOperation) {\r
+ \r
+ try {\r
+ dismissDialog(DIALOG_LOGIN_PROGRESS);\r
+ } catch (IllegalArgumentException e) {\r
+ // NOTHING TO DO ; can't find out what situation that leads to the exception in this code, but user logs signal that it happens\r
+ }\r
+ \r
+ if (result.isSuccess()) {\r
+ TextView tv = (TextView) findViewById(R.id.oAuth_URL);\r
+ tv.setError("OOOOOKKKKKK");\r
+ Log.d(TAG, "OOOOK!!!!");\r
+ /**\r
+ Uri uri = Uri.parse(mBaseUrl);\r
+ String username = "OAuth_user" + (new java.util.Random(System.currentTimeMillis())).nextLong(); \r
+ String accountName = username + "@" + uri.getHost();\r
+ if (uri.getPort() >= 0) {\r
+ accountName += ":" + uri.getPort();\r
+ }\r
+ // TODO - check that accountName does not exist\r
+ Account account = new Account(accountName, AccountAuthenticator.ACCOUNT_TYPE);\r
+ AccountManager accManager = AccountManager.get(this);\r
+ /// TODO SAVE THE ACCESS TOKEN, HERE OR IN SOME BETTER PLACE\r
+ //accManager.addAccountExplicitly(account, mAccesToken, null); //// IS THIS REALLY NEEDED? IS NOT REDUNDANT WITH SETACCOUNTAUTHENTICATORRESULT?\r
+\r
+ // Add this account as default in the preferences, if there is none\r
+ Account defaultAccount = AccountUtils.getCurrentOwnCloudAccount(this);\r
+ if (defaultAccount == null) {\r
+ SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(this).edit();\r
+ editor.putString("select_oc_account", accountName);\r
+ editor.commit();\r
+ }\r
+\r
+ /// account data to save by the AccountManager\r
+ final Intent intent = new Intent();\r
+ intent.putExtra(AccountManager.KEY_ACCOUNT_TYPE, AccountAuthenticator.ACCOUNT_TYPE);\r
+ intent.putExtra(AccountManager.KEY_ACCOUNT_NAME, account.name);\r
+ intent.putExtra(AccountManager.KEY_AUTHTOKEN, AccountAuthenticator.ACCOUNT_TYPE);\r
+ intent.putExtra(AccountManager.KEY_USERDATA, username);\r
+ intent.putExtra(AccountManager.KEY_AUTHTOKEN, mAccessToken)\r
+\r
+ accManager.setUserData(account, AccountAuthenticator.KEY_OC_VERSION, mConnChkRunnable.getDiscoveredVersion().toString());\r
+ accManager.setUserData(account, AccountAuthenticator.KEY_OC_BASE_URL, mBaseUrl);\r
+\r
+ setAccountAuthenticatorResult(intent.getExtras());\r
+ setResult(RESULT_OK, intent);\r
+ \r
+ /// enforce the first account synchronization\r
+ Bundle bundle = new Bundle();\r
+ bundle.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);\r
+ ContentResolver.requestSync(account, "org.owncloud", bundle);\r
+\r
+ finish();\r
+ */\r
+ \r
+ } else { \r
+ TextView tv = (TextView) findViewById(R.id.oAuth_URL);\r
+ tv.setError(result.getLogMessage());\r
+ Log.d(TAG, "NOOOOO " + result.getLogMessage());\r
+ }\r