X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/5665d9c306165c144fc60b9749ac184cb32369c0..901b6ac61e4a84d281e86b4989aa099801b28de7:/src/com/owncloud/android/operations/OAuth2GetAccessToken.java diff --git a/src/com/owncloud/android/operations/OAuth2GetAccessToken.java b/src/com/owncloud/android/operations/OAuth2GetAccessToken.java index 12e611c4..e2d72c5c 100644 --- a/src/com/owncloud/android/operations/OAuth2GetAccessToken.java +++ b/src/com/owncloud/android/operations/OAuth2GetAccessToken.java @@ -8,24 +8,31 @@ import org.apache.commons.httpclient.NameValuePair; import org.json.JSONException; import org.json.JSONObject; -import com.owncloud.android.authenticator.oauth2.OAuth2Context; -import com.owncloud.android.operations.RemoteOperationResult.ResultCode; +import com.owncloud.android.authentication.OAuth2Constants; +import com.owncloud.android.lib.common.OwnCloudClient; +import com.owncloud.android.lib.common.operations.RemoteOperation; +import com.owncloud.android.lib.common.operations.RemoteOperationResult; +import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; +import com.owncloud.android.utils.Log_OC; -import android.util.Log; - -import eu.alefzero.webdav.WebdavClient; public class OAuth2GetAccessToken extends RemoteOperation { private static final String TAG = OAuth2GetAccessToken.class.getSimpleName(); + private String mClientId; + private String mRedirectUri; + private String mGrantType; + private String mOAuth2AuthorizationResponse; private Map mOAuth2ParsedAuthorizationResponse; private Map mResultTokenMap; - public OAuth2GetAccessToken(String oAuth2AuthorizationResponse) { - + public OAuth2GetAccessToken(String clientId, String redirectUri, String grantType, String oAuth2AuthorizationResponse) { + mClientId = clientId; + mRedirectUri = redirectUri; + mGrantType = grantType; mOAuth2AuthorizationResponse = oAuth2AuthorizationResponse; mOAuth2ParsedAuthorizationResponse = new HashMap(); mResultTokenMap = null; @@ -41,14 +48,14 @@ public class OAuth2GetAccessToken extends RemoteOperation { } @Override - protected RemoteOperationResult run(WebdavClient client) { + protected RemoteOperationResult run(OwnCloudClient client) { RemoteOperationResult result = null; PostMethod postMethod = null; try { parseAuthorizationResponse(); - if (mOAuth2ParsedAuthorizationResponse.keySet().contains(OAuth2Context.KEY_ERROR)) { - if (OAuth2Context.ERROR_ACCESS_DENIED.equals(mOAuth2ParsedAuthorizationResponse.get(OAuth2Context.KEY_ERROR))) { + if (mOAuth2ParsedAuthorizationResponse.keySet().contains(OAuth2Constants.KEY_ERROR)) { + if (OAuth2Constants.VALUE_ERROR_ACCESS_DENIED.equals(mOAuth2ParsedAuthorizationResponse.get(OAuth2Constants.KEY_ERROR))) { result = new RemoteOperationResult(ResultCode.OAUTH2_ERROR_ACCESS_DENIED); } else { result = new RemoteOperationResult(ResultCode.OAUTH2_ERROR); @@ -56,14 +63,14 @@ public class OAuth2GetAccessToken extends RemoteOperation { } if (result == null) { - NameValuePair[] nameValuePairs = new NameValuePair[5]; - nameValuePairs[0] = new NameValuePair(OAuth2Context.KEY_CLIENT_ID, OAuth2Context.OAUTH2_F_CLIENT_ID); - nameValuePairs[1] = new NameValuePair(OAuth2Context.KEY_CODE, mOAuth2ParsedAuthorizationResponse.get(OAuth2Context.KEY_CODE)); - nameValuePairs[2] = new NameValuePair(OAuth2Context.KEY_SCOPE, mOAuth2ParsedAuthorizationResponse.get(OAuth2Context.KEY_SCOPE)); - nameValuePairs[3] = new NameValuePair(OAuth2Context.KEY_REDIRECT_URI, OAuth2Context.MY_REDIRECT_URI); - nameValuePairs[4] = new NameValuePair(OAuth2Context.KEY_GRANT_TYPE, OAuth2Context.OAUTH2_AUTH_CODE_GRANT_TYPE); + NameValuePair[] nameValuePairs = new NameValuePair[4]; + nameValuePairs[0] = new NameValuePair(OAuth2Constants.KEY_GRANT_TYPE, mGrantType); + nameValuePairs[1] = new NameValuePair(OAuth2Constants.KEY_CODE, mOAuth2ParsedAuthorizationResponse.get(OAuth2Constants.KEY_CODE)); + nameValuePairs[2] = new NameValuePair(OAuth2Constants.KEY_REDIRECT_URI, mRedirectUri); + nameValuePairs[3] = new NameValuePair(OAuth2Constants.KEY_CLIENT_ID, mClientId); + //nameValuePairs[4] = new NameValuePair(OAuth2Constants.KEY_SCOPE, mOAuth2ParsedAuthorizationResponse.get(OAuth2Constants.KEY_SCOPE)); - postMethod = new PostMethod(client.getBaseUri().toString()); + postMethod = new PostMethod(client.getWebdavUri().toString()); postMethod.setRequestBody(nameValuePairs); int status = client.executeMethod(postMethod); @@ -71,16 +78,16 @@ public class OAuth2GetAccessToken extends RemoteOperation { if (response != null && response.length() > 0) { JSONObject tokenJson = new JSONObject(response); parseAccessTokenResult(tokenJson); - if (mResultTokenMap.get(OAuth2Context.OAUTH2_TOKEN_RECEIVED_ERROR) != null || mResultTokenMap.get(OAuth2Context.KEY_ACCESS_TOKEN) == null) { + if (mResultTokenMap.get(OAuth2Constants.KEY_ERROR) != null || mResultTokenMap.get(OAuth2Constants.KEY_ACCESS_TOKEN) == null) { result = new RemoteOperationResult(ResultCode.OAUTH2_ERROR); } else { - result = new RemoteOperationResult(true, status); + result = new RemoteOperationResult(true, status, postMethod.getResponseHeaders()); } } else { client.exhaustResponse(postMethod.getResponseBodyAsStream()); - result = new RemoteOperationResult(false, status); + result = new RemoteOperationResult(false, status, postMethod.getResponseHeaders()); } } @@ -92,16 +99,16 @@ public class OAuth2GetAccessToken extends RemoteOperation { postMethod.releaseConnection(); // let the connection available for other methods if (result.isSuccess()) { - Log.i(TAG, "OAuth2 TOKEN REQUEST with auth code " + mOAuth2ParsedAuthorizationResponse.get("code") + " to " + client.getBaseUri() + ": " + result.getLogMessage()); + Log_OC.i(TAG, "OAuth2 TOKEN REQUEST with auth code " + mOAuth2ParsedAuthorizationResponse.get("code") + " to " + client.getWebdavUri() + ": " + result.getLogMessage()); } else if (result.getException() != null) { - Log.e(TAG, "OAuth2 TOKEN REQUEST with auth code " + mOAuth2ParsedAuthorizationResponse.get("code") + " to " + client.getBaseUri() + ": " + result.getLogMessage(), result.getException()); + Log_OC.e(TAG, "OAuth2 TOKEN REQUEST with auth code " + mOAuth2ParsedAuthorizationResponse.get("code") + " to " + client.getWebdavUri() + ": " + result.getLogMessage(), result.getException()); } else if (result.getCode() == ResultCode.OAUTH2_ERROR) { - Log.e(TAG, "OAuth2 TOKEN REQUEST with auth code " + mOAuth2ParsedAuthorizationResponse.get("code") + " to " + client.getBaseUri() + ": " + ((mResultTokenMap != null) ? mResultTokenMap.get(OAuth2Context.OAUTH2_TOKEN_RECEIVED_ERROR) : "NULL")); + Log_OC.e(TAG, "OAuth2 TOKEN REQUEST with auth code " + mOAuth2ParsedAuthorizationResponse.get("code") + " to " + client.getWebdavUri() + ": " + ((mResultTokenMap != null) ? mResultTokenMap.get(OAuth2Constants.KEY_ERROR) : "NULL")); } else { - Log.e(TAG, "OAuth2 TOKEN REQUEST with auth code " + mOAuth2ParsedAuthorizationResponse.get("code") + " to " + client.getBaseUri() + ": " + result.getLogMessage()); + Log_OC.e(TAG, "OAuth2 TOKEN REQUEST with auth code " + mOAuth2ParsedAuthorizationResponse.get("code") + " to " + client.getWebdavUri() + ": " + result.getLogMessage()); } } @@ -129,7 +136,7 @@ public class OAuth2GetAccessToken extends RemoteOperation { sb.append(value + "\n"); } - Log.v(TAG, "[" + i + "," + j + "] = " + p); + Log_OC.v(TAG, "[" + i + "," + j + "] = " + p); j++; } i++; @@ -140,29 +147,29 @@ public class OAuth2GetAccessToken extends RemoteOperation { private void parseAccessTokenResult (JSONObject tokenJson) throws JSONException { mResultTokenMap = new HashMap(); - if (tokenJson.has(OAuth2Context.KEY_ACCESS_TOKEN)) { - mResultTokenMap.put(OAuth2Context.KEY_ACCESS_TOKEN, tokenJson.getString(OAuth2Context.KEY_ACCESS_TOKEN)); + if (tokenJson.has(OAuth2Constants.KEY_ACCESS_TOKEN)) { + mResultTokenMap.put(OAuth2Constants.KEY_ACCESS_TOKEN, tokenJson.getString(OAuth2Constants.KEY_ACCESS_TOKEN)); } - if (tokenJson.has(OAuth2Context.KEY_TOKEN_TYPE)) { - mResultTokenMap.put(OAuth2Context.KEY_TOKEN_TYPE, tokenJson.getString(OAuth2Context.KEY_TOKEN_TYPE)); + if (tokenJson.has(OAuth2Constants.KEY_TOKEN_TYPE)) { + mResultTokenMap.put(OAuth2Constants.KEY_TOKEN_TYPE, tokenJson.getString(OAuth2Constants.KEY_TOKEN_TYPE)); } - if (tokenJson.has(OAuth2Context.KEY_EXPIRES_IN)) { - mResultTokenMap.put(OAuth2Context.KEY_EXPIRES_IN, tokenJson.getString(OAuth2Context.KEY_EXPIRES_IN)); + if (tokenJson.has(OAuth2Constants.KEY_EXPIRES_IN)) { + mResultTokenMap.put(OAuth2Constants.KEY_EXPIRES_IN, tokenJson.getString(OAuth2Constants.KEY_EXPIRES_IN)); } - if (tokenJson.has(OAuth2Context.KEY_REFRESH_TOKEN)) { - mResultTokenMap.put(OAuth2Context.KEY_REFRESH_TOKEN, tokenJson.getString(OAuth2Context.KEY_REFRESH_TOKEN)); + if (tokenJson.has(OAuth2Constants.KEY_REFRESH_TOKEN)) { + mResultTokenMap.put(OAuth2Constants.KEY_REFRESH_TOKEN, tokenJson.getString(OAuth2Constants.KEY_REFRESH_TOKEN)); } - if (tokenJson.has(OAuth2Context.KEY_SCOPE)) { - mResultTokenMap.put(OAuth2Context.KEY_SCOPE, tokenJson.getString(OAuth2Context.KEY_SCOPE)); + if (tokenJson.has(OAuth2Constants.KEY_SCOPE)) { + mResultTokenMap.put(OAuth2Constants.KEY_SCOPE, tokenJson.getString(OAuth2Constants.KEY_SCOPE)); } - if (tokenJson.has(OAuth2Context.KEY_ERROR)) { - mResultTokenMap.put(OAuth2Context.KEY_ERROR, tokenJson.getString(OAuth2Context.KEY_ERROR)); + if (tokenJson.has(OAuth2Constants.KEY_ERROR)) { + mResultTokenMap.put(OAuth2Constants.KEY_ERROR, tokenJson.getString(OAuth2Constants.KEY_ERROR)); } - if (tokenJson.has(OAuth2Context.KEY_ERROR_DESCRIPTION)) { - mResultTokenMap.put(OAuth2Context.KEY_ERROR_DESCRIPTION, tokenJson.getString(OAuth2Context.KEY_ERROR_DESCRIPTION)); + if (tokenJson.has(OAuth2Constants.KEY_ERROR_DESCRIPTION)) { + mResultTokenMap.put(OAuth2Constants.KEY_ERROR_DESCRIPTION, tokenJson.getString(OAuth2Constants.KEY_ERROR_DESCRIPTION)); } - if (tokenJson.has(OAuth2Context.KEY_ERROR_URI)) { - mResultTokenMap.put(OAuth2Context.KEY_ERROR_URI, tokenJson.getString(OAuth2Context.KEY_ERROR_URI)); + if (tokenJson.has(OAuth2Constants.KEY_ERROR_URI)) { + mResultTokenMap.put(OAuth2Constants.KEY_ERROR_URI, tokenJson.getString(OAuth2Constants.KEY_ERROR_URI)); } }