package com.shejiaomao.weibo.service.task; import com.shejiaomao.maobo.R; import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; import android.content.SharedPreferences; import android.os.AsyncTask; import android.webkit.URLUtil; import android.widget.Toast; import com.cattong.commons.LibException; import com.cattong.commons.Logger; import com.cattong.commons.ServiceProvider; import com.cattong.commons.http.auth.Authorization; import com.cattong.commons.http.auth.OAuthAuthorizeHelper; import com.cattong.commons.oauth.config.OAuthConfig; import com.shejiaomao.common.NetUtil; import com.shejiaomao.common.ResourceBook; import com.shejiaomao.weibo.activity.AddAccountActivity; import com.shejiaomao.weibo.activity.AuthorizeActivity; import com.shejiaomao.weibo.common.Constants; import com.shejiaomao.weibo.common.SheJiaoMaoException; public class OAuthRetrieveRequestTokenTask extends AsyncTask<Void, Void, Boolean> { private AddAccountActivity context; private ServiceProvider spSelected; private boolean isMakeDefault; private boolean isFollowOffical; private OAuthConfig oauthConfig; private ProgressDialog progressDialog; private String message; public OAuthRetrieveRequestTokenTask(AddAccountActivity context,ServiceProvider sp, boolean isMakeDefault, boolean isFollowOffical) { this.context = context; this.spSelected = sp; this.isMakeDefault = isMakeDefault; this.isFollowOffical = isFollowOffical; } @Override protected void onPreExecute() { progressDialog = ProgressDialog.show( context, null, context.getString(R.string.msg_retrieving_request_token), true, false ); } @Override protected Boolean doInBackground(Void... arg) { boolean isSuccess = false; Authorization auth = context.getAuth(); oauthConfig = auth.getoAuthConfig(); if (oauthConfig == null) { return isSuccess; } try { if (NetUtil.isNETWAP() && URLUtil.isHttpsUrl(oauthConfig.getRequestTokenUrl())) { throw new SheJiaoMaoException(SheJiaoMaoException.NET_HTTPS_UNDER_CMWAP); } // 获取RequestToken和RequestTokenSecret OAuthAuthorizeHelper authorizeHelper = new OAuthAuthorizeHelper(); Authorization resultAuth = authorizeHelper.retrieveRequestToken(auth); //网站认证跳转前保存获取的RequestToken 和 RequestTokenSecret 以及是否设为默认帐号 数据 SharedPreferences.Editor editor = context.getSharedPreferences( Constants.PREFS_NAME_APP_TEMP, Activity.MODE_PRIVATE).edit(); editor.putString(Constants.PREFS_KEY_OAUTH_TOKEN, resultAuth.getAccessToken()); editor.putString(Constants.PREFS_KEY_OAUTH_TOKEN_SECRET, resultAuth.getAccessSecret()); editor.putBoolean(Constants.PREFS_KEY_MAKE_DEFAULT, isMakeDefault); editor.putBoolean(Constants.PREFS_KEY_FOLLOW_OFFICAL, isFollowOffical); editor.commit(); Intent intent = new Intent(); intent.setClass(context, AuthorizeActivity.class); intent.putExtra("Authorization", auth); intent.putExtra("ServiceProvider", spSelected.toString()); intent.putExtra("Authorize_Url", authorizeHelper.getAuthorizeUrl(resultAuth)); intent.putExtra("Callback_Url", oauthConfig.getCallbackUrl()); context.startActivityForResult(intent, Constants.REQUEST_CODE_OAUTH_AUTHORIZE); isSuccess = true; } catch (LibException e) { message = ResourceBook.getResultCodeValue(e.getErrorCode(), context); Logger.debug("ErrorCode:" + e.getErrorCode(), e); } catch (SheJiaoMaoException e) { message = ResourceBook.getResultCodeValue(e.getStatusCode(), context); Logger.debug("ErrorCode:" + e.getStatusCode(), e); } return isSuccess; } protected void onPostExecute(Boolean result) { if (progressDialog != null) { try { progressDialog.dismiss(); } catch (Exception e){} } if (!result) { Toast.makeText(context, message, Toast.LENGTH_LONG).show(); } } }