* used by application and all extensions.\r
*/\r
public static final String ACCOUNT_TYPE = "owncloud";\r
+ public static final String AUTHORITY = "org.owncloud";\r
public static final String AUTH_TOKEN_TYPE = "org.owncloud";\r
public static final String AUTH_TOKEN_TYPE_PASSWORD = "owncloud.password";\r
public static final String AUTH_TOKEN_TYPE_ACCESS_TOKEN = "owncloud.oauth2.access_token";\r
return e.getFailureBundle();\r
}\r
final Intent intent = new Intent(mContext, AuthenticatorActivity.class);\r
- intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE,\r
- response);\r
+ intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response);\r
intent.putExtra(KEY_AUTH_TOKEN_TYPE, authTokenType);\r
intent.putExtra(KEY_REQUIRED_FEATURES, requiredFeatures);\r
intent.putExtra(KEY_LOGIN_OPTIONS, options);\r
\r
setIntentFlags(intent);\r
+ \r
final Bundle bundle = new Bundle();\r
bundle.putParcelable(AccountManager.KEY_INTENT, intent);\r
return bundle;\r
return null;\r
}\r
\r
+ /**\r
+ * {@inheritDoc}\r
+ */\r
@Override\r
public Bundle getAuthToken(AccountAuthenticatorResponse response,\r
Account account, String authTokenType, Bundle options)\r
throws NetworkErrorException {\r
+ /// validate parameters\r
try {\r
validateAccountType(account.type);\r
validateAuthTokenType(authTokenType);\r
e.printStackTrace();\r
return e.getFailureBundle();\r
}\r
+ \r
+ /// check if required token is stored\r
final AccountManager am = AccountManager.get(mContext);\r
- if (authTokenType.equals(AUTH_TOKEN_TYPE_ACCESS_TOKEN)) {\r
- final String accessToken = am.peekAuthToken(account, authTokenType);\r
- if (accessToken != null) {\r
- final Bundle result = new Bundle();\r
- result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name);\r
- result.putString(AccountManager.KEY_ACCOUNT_TYPE, ACCOUNT_TYPE);\r
- result.putString(AccountManager.KEY_AUTHTOKEN, accessToken);\r
- return result;\r
- }\r
- \r
- } else if (authTokenType.equals(AUTH_TOKEN_TYPE_PASSWORD)) {\r
- final String password = am.getPassword(account);\r
- if (password != null) {\r
- final Bundle result = new Bundle();\r
- result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name);\r
- result.putString(AccountManager.KEY_ACCOUNT_TYPE, ACCOUNT_TYPE);\r
- result.putString(AccountManager.KEY_AUTHTOKEN, password);\r
- return result;\r
- }\r
+ String accessToken;\r
+ if (authTokenType.equals(AUTH_TOKEN_TYPE_PASSWORD)) {\r
+ accessToken = am.getPassword(account);\r
+ } else {\r
+ accessToken = am.peekAuthToken(account, authTokenType);\r
}\r
-\r
+ if (accessToken != null) {\r
+ final Bundle result = new Bundle();\r
+ result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name);\r
+ result.putString(AccountManager.KEY_ACCOUNT_TYPE, ACCOUNT_TYPE);\r
+ result.putString(AccountManager.KEY_AUTHTOKEN, accessToken);\r
+ return result;\r
+ }\r
+ \r
+ /// if not stored, return Intent to access the AuthenticatorActivity\r
final Intent intent = new Intent(mContext, AuthenticatorActivity.class);\r
- intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE,\r
- response);\r
+ intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response);\r
intent.putExtra(KEY_AUTH_TOKEN_TYPE, authTokenType);\r
intent.putExtra(KEY_LOGIN_OPTIONS, options);\r
- intent.putExtra(AuthenticatorActivity.PARAM_USERNAME, account.name); // TODO fix, this will pass the accountName, not the username\r
+ intent.putExtra(AuthenticatorActivity.EXTRA_ACCOUNT, account);\r
\r
final Bundle bundle = new Bundle();\r
bundle.putParcelable(AccountManager.KEY_INTENT, intent);\r
\r
private void setIntentFlags(Intent intent) {\r
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);\r
- //intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);\r
- //intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); // incompatible with the authorization code grant in OAuth\r
+ intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);\r
+ intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); // incompatible with the authorization code grant in OAuth\r
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);\r
intent.addFlags(Intent.FLAG_FROM_BACKGROUND);\r
}\r