@Test public void destroyOutboxDirectMessage() { try { Paging<User> paging = new Paging<User>(); List<User> listUser = weibo.getFollowers(paging); assertTrue(ListUtil.isNotEmpty(listUser)); User user = listUser.get(0); assertNotNull(user); String text = "测试删除私信接口:destroyOutboxDirectMessage,莫慌," + System.currentTimeMillis(); DirectMessage message = weibo.sendDirectMessage(user.getDisplayName(), text); assertNotNull(message); assertTrue(StringUtil.isNotEmpty(message.getId())); TestUtil.sleep(); DirectMessage deletedMessage = weibo.destroyOutboxDirectMessage(message.getId()); assertNotNull(deletedMessage); assertTrue(StringUtil.isNotEmpty(deletedMessage.getId())); } catch (LibException e) { e.printStackTrace(); assertTrue(false); } }
// 翻页:自由方式(FreeStyle) @Test public void getOutboxDirectMessages() { List<DirectMessage> listMessage = null; Paging<DirectMessage> paging = new Paging<DirectMessage>(); try { listMessage = weibo.getOutboxDirectMessages(paging); } catch (Exception e) { e.printStackTrace(); } assertTrue(ListUtil.isNotEmpty(listMessage)); assertTrue(ListUtil.isNotEmpty(listMessage)); Method method = null; try { method = Weibo.class.getMethod("getOutboxDirectMessages", Paging.class); } catch (SecurityException e1) { e1.printStackTrace(); assertTrue(false); } catch (NoSuchMethodException e1) { e1.printStackTrace(); assertTrue(false); } // 测试上翻 PagingTest.pageUp(listMessage, weibo, method); // 测试下翻 PagingTest.pageDown(listMessage, weibo, method); // 测试中间展开 PagingTest.pageExpand(listMessage, weibo, method); }
@Test public void getInboxDirectMessages_param() { try { List<DirectMessage> listMessage = weibo.getInboxDirectMessages(null); assertNull(listMessage); assertTrue(false); } catch (LibException e) { assertTrue(true); } }
@Test public void destroyInboxDirectMessage() { try { Paging<DirectMessage> paging = new Paging<DirectMessage>(); List<DirectMessage> listMessage = weibo.getInboxDirectMessages(paging); assertTrue(ListUtil.isNotEmpty(listMessage)); DirectMessage message = listMessage.get(0); assertNotNull(message); TestUtil.sleep(); DirectMessage deletedMessage = weibo.destroyInboxDirectMessage(message.getId()); assertNotNull(deletedMessage); assertTrue(StringUtil.isNotEmpty(deletedMessage.getId())); } catch (Exception e) { e.printStackTrace(); assertTrue(false); } }
@Override public int insertWeibos( Long schoolId, Long classesId, Long userId, String term, int del, List<Map<String, Object>> list) { WeiboMapper mapper = super.getMapper(WeiboMapper.class); if (del == 1) { if (classesId == null) { // mapper.deleteWeiboSchool(schoolId); } else { mapper.deleteWeiboClasses(classesId); } } Weibo weibo = new Weibo(); for (Map<String, Object> m : list) { weibo.setId(super.getMapper(SequenceMapper.class).sequence()); weibo.setSchoolId(schoolId); weibo.setClassesId(classesId); weibo.setCreateUserId(userId); weibo.setCreateTime(new Timestamp(System.currentTimeMillis())); weibo.setUpdateUserId(userId); weibo.setUpdateTime(new Timestamp(System.currentTimeMillis())); weibo.setPic(0L); // weibo.setDescription(m.get("description")==null?null:m.get("description").toString()); if (m.get("description") != null) { weibo.setDescription( SensitivewordFilter.replaceSensitiveWord(m.get("description").toString())); } mapper.insert(weibo); } return list.size(); }
public static void authorize(Context context) { if (accessToken != null) return; if (!Util.isEmpty(Login.sinaWeiboToken) && !Util.isEmpty(Login.sinaExpiresIN)) { access_token = Login.sinaWeiboToken; expires_in = Login.sinaExpiresIN; accessToken = new Oauth2AccessToken(access_token, expires_in); if (!accessToken.isSessionValid()) { accessToken = null; } } WeiboParameters parameters = new WeiboParameters(); parameters.add("forcelogin", "true"); com.weibo.sdk.android.util.Utility.isWifi(context); weibo.startDialog( context, parameters, new WeiboAuthListener() { // weibo.authorize(context, new WeiboAuthListener() { @Override public void onComplete(Bundle bundle) { access_token = bundle.getString("access_token"); expires_in = bundle.getString("expires_in"); accessToken = new Oauth2AccessToken(access_token, expires_in); try { SendToken(); } catch (IOException e) { e.printStackTrace(); } } @Override public void onWeiboException(WeiboException e) { clearToken(); } @Override public void onError(WeiboDialogError weiboDialogError) { clearToken(); } @Override public void onCancel() { clearToken(); } }); }
// 生成oauth_signature public String generateSignature(String data, Token token) throws WeiboException { byte[] byteHMAC = null; try { Mac mac = Mac.getInstance(HttpHeaderFactory.CONST_HMAC_SHA1); SecretKeySpec spec = null; String oauthSignature = encode(Weibo.getAppSecret()) + "&"; spec = new SecretKeySpec(oauthSignature.getBytes(), HttpHeaderFactory.CONST_HMAC_SHA1); mac.init(spec); byteHMAC = mac.doFinal(data.getBytes()); } catch (InvalidKeyException e) { throw new WeiboException(e); } catch (NoSuchAlgorithmException e) { throw new WeiboException(e); } return String.valueOf(Utility.base64Encode(byteHMAC)); }
@Override public String generateSignature(String data, Token token) { byte[] byteHMAC = null; try { Mac mac = Mac.getInstance(HttpHeaderFactory.CONST_HMAC_SHA1); SecretKeySpec spec = null; if (null == token.getSecretKeySpec()) { String oauthSignature = encode(Weibo.getAppSecret()) + "&" + encode(token.getSecret()); spec = new SecretKeySpec(oauthSignature.getBytes(), HttpHeaderFactory.CONST_HMAC_SHA1); token.setSecretKeySpec(spec); } spec = token.getSecretKeySpec(); mac.init(spec); byteHMAC = mac.doFinal(data.getBytes()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (InvalidKeyException e) { // TODO Auto-generated catch block e.printStackTrace(); } return String.valueOf(Utility.base64Encode(byteHMAC)); }
/** Created by bxl on 5/23/13. */ public class WeiboFunction { private static Oauth2AccessToken accessToken = null; private static String access_token = null, expires_in = null; private static String weiboUpdateResult; private static String weiboUpLoadResult; private static Weibo weibo = Weibo.getInstance(Constant.WeiboAppKey, Constant.WeiboRedirectURL);; // static private WeiboFunction weiboFunction = null; /* static public WeiboFunction getInstance(){ if(weiboFunction==null){ weiboFunction = new WeiboFunction(); } return weiboFunction; } */ public static boolean isBound() { if (!Util.isEmpty(Login.sinaWeiboToken) && !Util.isEmpty(Login.sinaExpiresIN)) { access_token = Login.sinaWeiboToken; expires_in = Login.sinaExpiresIN; accessToken = new Oauth2AccessToken(access_token, expires_in); if (!accessToken.isSessionValid()) { accessToken = null; } } return accessToken != null; } public static boolean unBound() { if (isBound()) { ServerConnector sc = new ServerConnector("https://api.weibo.com/oauth2", "/revokeoauth2"); sc.setRequestParam("access_token", access_token); try { String result = sc.doPost(); Log.d("revoke", "result"); } catch (IOException e) { // accessToken = null; Log.d("revoke exception", e.getMessage()); e.printStackTrace(); } AccountAPI accountAPI = new AccountAPI(accessToken); accountAPI.endSession( new RequestListener() { @Override public void onComplete(String s) { clearToken(); } @Override public void onIOException(IOException e) { clearToken(); } @Override public void onError(WeiboException e) { clearToken(); } }); clearToken(); } clearToken(); return true; } private static void clearToken() { access_token = null; expires_in = null; accessToken = null; try { SendToken(); Login.sinaWeiboToken = null; Login.sinaExpiresIN = null; } catch (IOException e) { e.printStackTrace(); } } public static void authorize(Context context) { if (accessToken != null) return; if (!Util.isEmpty(Login.sinaWeiboToken) && !Util.isEmpty(Login.sinaExpiresIN)) { access_token = Login.sinaWeiboToken; expires_in = Login.sinaExpiresIN; accessToken = new Oauth2AccessToken(access_token, expires_in); if (!accessToken.isSessionValid()) { accessToken = null; } } WeiboParameters parameters = new WeiboParameters(); parameters.add("forcelogin", "true"); com.weibo.sdk.android.util.Utility.isWifi(context); weibo.startDialog( context, parameters, new WeiboAuthListener() { // weibo.authorize(context, new WeiboAuthListener() { @Override public void onComplete(Bundle bundle) { access_token = bundle.getString("access_token"); expires_in = bundle.getString("expires_in"); accessToken = new Oauth2AccessToken(access_token, expires_in); try { SendToken(); } catch (IOException e) { e.printStackTrace(); } } @Override public void onWeiboException(WeiboException e) { clearToken(); } @Override public void onError(WeiboDialogError weiboDialogError) { clearToken(); } @Override public void onCancel() { clearToken(); } }); } private static String SendToken() throws IOException { ServerConnector sc = new ServerConnector("user"); HashMap<String, String> tokenMap = new HashMap<String, String>(); tokenMap.put("access_token", access_token); tokenMap.put("expires_in", expires_in); sc.setRequestParam("userID", Login.userID); sc.setRequestParam("sinaToken", JSONHelper.getJSONHelperInstance().convertToString(tokenMap)); String result = sc.doPost(); return result; } private WeiboFunction() { weibo = Weibo.getInstance(Constant.WeiboAppKey, Constant.WeiboRedirectURL); } public static String WeiboStatusUpdate( Context context, final String content, final RequestListener requestListener) { weiboUpdateResult = "success"; if (accessToken == null) { WeiboParameters parameters = new WeiboParameters(); parameters.add("forcelogin", "true"); com.weibo.sdk.android.util.Utility.isWifi(context); weibo.startDialog( context, parameters, new WeiboAuthListener() { // weibo.authorize(context, new WeiboAuthListener() { @Override public void onComplete(Bundle bundle) { access_token = bundle.getString("access_token"); expires_in = bundle.getString("expires_in"); accessToken = new Oauth2AccessToken(access_token, expires_in); try { SendToken(); } catch (IOException e) { e.printStackTrace(); } StatusesAPI statusesAPI = new StatusesAPI(accessToken); if (requestListener != null) { statusesAPI.update(content, null, null, requestListener); } else { statusesAPI.update( content, null, null, new RequestListener() { @Override public void onComplete(String s) { weiboUpdateResult = s; weiboUpdateResult = "success"; // Toast.makeText(Record_Journal.this, "微博发布成功", Toast.LENGTH_SHORT).show(); } @Override public void onIOException(IOException e) { weiboUpdateResult = e.getMessage(); weiboUpdateResult = "fail"; // Toast.makeText(Record_Journal.this, "微博发布失败:"+e.getMessage(), // Toast.LENGTH_SHORT).show(); } @Override public void onError(WeiboException e) { weiboUpdateResult = e.getMessage(); weiboUpdateResult = "fail"; // Toast.makeText(Record_Journal.this, "微博发布失败:"+e.getMessage(), // Toast.LENGTH_SHORT).show(); } }); } } @Override public void onWeiboException(WeiboException e) { weiboUpdateResult = e.getMessage(); weiboUpdateResult = "fail"; clearToken(); } @Override public void onError(WeiboDialogError weiboDialogError) { weiboUpdateResult = weiboDialogError.getMessage(); weiboUpdateResult = "fail"; clearToken(); } @Override public void onCancel() { clearToken(); } }); } else { StatusesAPI statusesAPI = new StatusesAPI(accessToken); if (requestListener != null) { statusesAPI.update(content, null, null, requestListener); } else { statusesAPI.update( content, null, null, new RequestListener() { @Override public void onComplete(String s) { weiboUpdateResult = s; weiboUpdateResult = "success"; // Toast.makeText(Record_Journal.this, "微博发布成功", Toast.LENGTH_SHORT).show(); } @Override public void onIOException(IOException e) { weiboUpdateResult = e.getMessage(); weiboUpdateResult = "fail"; // Toast.makeText(Record_Journal.this, "微博发布失败:"+e.getMessage(), // Toast.LENGTH_SHORT).show(); } @Override public void onError(WeiboException e) { weiboUpdateResult = e.getMessage(); weiboUpdateResult = "fail"; // Toast.makeText(Record_Journal.this, "微博发布失败:"+e.getMessage(), // Toast.LENGTH_SHORT).show(); } }); } } return weiboUpdateResult; } /* WeiboParameters weiboParameters = new WeiboParameters(); weiboParameters.add("access_token", access_token); weiboParameters.add("status", content); AsyncWeiboRunner.request("https://api.weibo.com/2/statuses/update.json", weiboParameters, "POST", new RequestListener() { @Override public void onComplete(String s) { Toast.makeText(context, s, Toast.LENGTH_LONG).show(); } @Override public void onIOException(IOException e) { e.printStackTrace(); } @Override public void onError(WeiboException e) { e.printStackTrace(); } }); */ /* SchemeRegistry schemeRegistry = new SchemeRegistry(); schemeRegistry.register(new Scheme("https", new EasySSLSocketFactory(), 80)); schemeRegistry.register(new Scheme("https", new EasySSLSocketFactory(), 443)); schemeRegistry.register(new Scheme("https", new EasySSLSocketFactory(), 8443)); //HttpParams params = post.getParams(); HttpParams params = new BasicHttpParams(); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setContentCharset(params, "utf-8"); //params.setBooleanParameter("http.protocol.expect-continue", false); ClientConnectionManager connManager = new ThreadSafeClientConnManager(params, schemeRegistry); DefaultHttpClient client = new DefaultHttpClient(connManager, params); HttpPost post = new HttpPost("https://api.weibo.com/2/statuses/update.json"); ArrayList<NameValuePair> param=new ArrayList<NameValuePair>(); param.add(new BasicNameValuePair("access_token", access_token)); param.add(new BasicNameValuePair("status", content)); try { UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(param, HTTP.UTF_8); post.setEntity(urlEncodedFormEntity); //HttpHost target = new HttpHost("http://open.weibo.com/"); HttpResponse response = client.execute(post); String result = EntityUtils.toString(response.getEntity()); System.out.println(result); } catch (UnsupportedEncodingException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } catch (ClientProtocolException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } catch (IOException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } */ public static String WeiboStatusUpload( Context context, final String content, final String pic, final RequestListener requestListener) { weiboUpLoadResult = "success"; if (accessToken == null) { WeiboParameters parameters = new WeiboParameters(); parameters.add("forcelogin", "true"); com.weibo.sdk.android.util.Utility.isWifi(context); weibo.startDialog( context, parameters, new WeiboAuthListener() { // weibo.authorize(context, new WeiboAuthListener() { @Override public void onComplete(Bundle bundle) { access_token = bundle.getString("access_token"); expires_in = bundle.getString("expires_in"); accessToken = new Oauth2AccessToken(access_token, expires_in); try { SendToken(); } catch (IOException e) { e.printStackTrace(); } StatusesAPI statusesAPI = new StatusesAPI(accessToken); if (requestListener != null) { statusesAPI.upload(content, pic, null, null, requestListener); } else { statusesAPI.upload( content, pic, null, null, new RequestListener() { @Override public void onComplete(String s) { weiboUpLoadResult = s; weiboUpLoadResult = "success"; // Toast.makeText(Record_Journal.this, "微博发布成功", Toast.LENGTH_SHORT).show(); } @Override public void onIOException(IOException e) { weiboUpLoadResult = e.getMessage(); weiboUpLoadResult = "fail"; e.printStackTrace(); // Toast.makeText(Record_Journal.this, "微博发布失败:"+e.getMessage(), // Toast.LENGTH_SHORT).show(); } @Override public void onError(WeiboException e) { weiboUpLoadResult = e.getMessage(); weiboUpLoadResult = "fail"; e.printStackTrace(); // Toast.makeText(Record_Journal.this, "微博发布失败:"+e.getMessage(), // Toast.LENGTH_SHORT).show(); } }); } } @Override public void onWeiboException(WeiboException e) { weiboUpLoadResult = e.getMessage(); weiboUpLoadResult = "fail"; e.printStackTrace(); clearToken(); } @Override public void onError(WeiboDialogError weiboDialogError) { weiboUpLoadResult = weiboDialogError.getMessage(); weiboUpLoadResult = "fail"; weiboDialogError.printStackTrace(); clearToken(); } @Override public void onCancel() { clearToken(); } }); } else { StatusesAPI statusesAPI = new StatusesAPI(accessToken); if (requestListener != null) { statusesAPI.upload(content, pic, null, null, requestListener); } else { statusesAPI.upload( content, pic, null, null, new RequestListener() { @Override public void onComplete(String s) { weiboUpLoadResult = s; weiboUpLoadResult = "success"; // Toast.makeText(Record_Journal.this, "微博发布成功", Toast.LENGTH_SHORT).show(); } @Override public void onIOException(IOException e) { weiboUpLoadResult = e.getMessage(); weiboUpLoadResult = "fail"; e.printStackTrace(); // Toast.makeText(Record_Journal.this, "微博发布失败:"+e.getMessage(), // Toast.LENGTH_SHORT).show(); } @Override public void onError(WeiboException e) { weiboUpLoadResult = e.getMessage(); weiboUpLoadResult = "fail"; e.printStackTrace(); // Toast.makeText(Record_Journal.this, "微博发布失败:"+e.getMessage(), // Toast.LENGTH_SHORT).show(); } }); } } return weiboUpLoadResult; } }
public static String WeiboStatusUpload( Context context, final String content, final String pic, final RequestListener requestListener) { weiboUpLoadResult = "success"; if (accessToken == null) { WeiboParameters parameters = new WeiboParameters(); parameters.add("forcelogin", "true"); com.weibo.sdk.android.util.Utility.isWifi(context); weibo.startDialog( context, parameters, new WeiboAuthListener() { // weibo.authorize(context, new WeiboAuthListener() { @Override public void onComplete(Bundle bundle) { access_token = bundle.getString("access_token"); expires_in = bundle.getString("expires_in"); accessToken = new Oauth2AccessToken(access_token, expires_in); try { SendToken(); } catch (IOException e) { e.printStackTrace(); } StatusesAPI statusesAPI = new StatusesAPI(accessToken); if (requestListener != null) { statusesAPI.upload(content, pic, null, null, requestListener); } else { statusesAPI.upload( content, pic, null, null, new RequestListener() { @Override public void onComplete(String s) { weiboUpLoadResult = s; weiboUpLoadResult = "success"; // Toast.makeText(Record_Journal.this, "微博发布成功", Toast.LENGTH_SHORT).show(); } @Override public void onIOException(IOException e) { weiboUpLoadResult = e.getMessage(); weiboUpLoadResult = "fail"; e.printStackTrace(); // Toast.makeText(Record_Journal.this, "微博发布失败:"+e.getMessage(), // Toast.LENGTH_SHORT).show(); } @Override public void onError(WeiboException e) { weiboUpLoadResult = e.getMessage(); weiboUpLoadResult = "fail"; e.printStackTrace(); // Toast.makeText(Record_Journal.this, "微博发布失败:"+e.getMessage(), // Toast.LENGTH_SHORT).show(); } }); } } @Override public void onWeiboException(WeiboException e) { weiboUpLoadResult = e.getMessage(); weiboUpLoadResult = "fail"; e.printStackTrace(); clearToken(); } @Override public void onError(WeiboDialogError weiboDialogError) { weiboUpLoadResult = weiboDialogError.getMessage(); weiboUpLoadResult = "fail"; weiboDialogError.printStackTrace(); clearToken(); } @Override public void onCancel() { clearToken(); } }); } else { StatusesAPI statusesAPI = new StatusesAPI(accessToken); if (requestListener != null) { statusesAPI.upload(content, pic, null, null, requestListener); } else { statusesAPI.upload( content, pic, null, null, new RequestListener() { @Override public void onComplete(String s) { weiboUpLoadResult = s; weiboUpLoadResult = "success"; // Toast.makeText(Record_Journal.this, "微博发布成功", Toast.LENGTH_SHORT).show(); } @Override public void onIOException(IOException e) { weiboUpLoadResult = e.getMessage(); weiboUpLoadResult = "fail"; e.printStackTrace(); // Toast.makeText(Record_Journal.this, "微博发布失败:"+e.getMessage(), // Toast.LENGTH_SHORT).show(); } @Override public void onError(WeiboException e) { weiboUpLoadResult = e.getMessage(); weiboUpLoadResult = "fail"; e.printStackTrace(); // Toast.makeText(Record_Journal.this, "微博发布失败:"+e.getMessage(), // Toast.LENGTH_SHORT).show(); } }); } } return weiboUpLoadResult; }
private WeiboFunction() { weibo = Weibo.getInstance(Constant.WeiboAppKey, Constant.WeiboRedirectURL); }
public DirectMessage sendDirectMessage(String text) throws WeiboException { return weibo.sendDirectMessage(this.getName(), text); }