@Override protected Boolean doInBackground(Void... arg) { boolean isSuccess = false; if (auth == null) { return isSuccess; } oauthConfig = auth.getoAuthConfig(); if (oauthConfig == null) { return isSuccess; } String username = auth.getAccessToken(); String password = auth.getAccessSecret(); ServiceProvider sp = auth.getServiceProvider(); try { if (NetUtil.isNETWAP() && (URLUtil.isHttpsUrl(oauthConfig.getRequestTokenUrl()) || URLUtil.isHttpsUrl(oauthConfig.getAccessTokenUrl()))) { throw new SheJiaoMaoException(SheJiaoMaoException.NET_HTTPS_UNDER_CMWAP); } Authorization resultAuth = null; switch (sp) { case NetEase: if (username.indexOf("@") < 0) { username += "@163.com"; // 如果用户没输入完整的邮件地址,则自动追加 @163.com } // 直落 case Sina: case Sohu: case Fanfou: case Twitter: auth.setAccessToken(username); auth.setAccessSecret(password); if (oauthConfig.getAuthVersion() == Authorization.AUTH_VERSION_OAUTH_2) { OAuth2AuthorizeHelper authHelper = new OAuth2AuthorizeHelper(); resultAuth = authHelper.retrieveAccessToken(auth); } else { OAuthAuthorizeHelper authHelper = new OAuthAuthorizeHelper(); resultAuth = authHelper.retrieveAccessToken(auth); } break; default: break; } if (resultAuth == null) { throw new SheJiaoMaoException(SheJiaoMaoException.AUTH_TOKEN_IS_NULL); } Logger.debug(resultAuth.toString()); BaseUser user = null; if (sp.isSns()) { Sns sns = SnsFactory.getInstance(resultAuth); String userId = sns.getUserId(); user = sns.showUser(userId); } else { Weibo mBlog = WeiboFactory.getInstance(resultAuth); user = mBlog.verifyCredentials(); } final LocalAccountDao accountDao = new LocalAccountDao(context); if (accountDao.isExists(sp, user.getUserId())) { throw new SheJiaoMaoException(SheJiaoMaoException.ACCOUNT_IS_EXIST); } if (accountDao.findAllValid() == null) { isMakeDefault = true; } account = new LocalAccount(); account.setAuthorization(auth); account.setUser(user); account.setState(Account.STATE_ACTIVE); account.setAppKey(oauthConfig.getConsumerKey()); account.setAppSecret(oauthConfig.getConsumerSecret()); account.setCreatedAt(new Date()); accountDao.add(account); if (isMakeDefault) { accountDao.makeDefault(account); } GlobalVars.addAccount(account); isSuccess = true; } catch (LibException e) { resultMsg = ResourceBook.getResultCodeValue(e.getErrorCode(), context); Logger.error(resultMsg, e); context.resetAuthToken(); } catch (SheJiaoMaoException e) { resultMsg = ResourceBook.getResultCodeValue(e.getStatusCode(), context); Logger.error(resultMsg, e); context.resetAuthToken(); } return isSuccess; }