Facebook: 手动获得one-time code与Infinite SessionKey

Categories: Java; Tagged with: ; @ December 4th, 2010 13:05

1. 首先需要安装App – 如果尚未配置页面, 可直接使访问:http://www.facebook.com/login.php?api_key=<API_KEY> 以直接进入app安装页面.
2. 访问 https://login.facebook.com/code_gen.php?api_key=API_KEY&v=1.0 获得one-time code
3. 进入App页面, 查看地址栏中的SessionKey, 此key即为Infinite Session Key.

Facebook: 使用Java API发布内容

Categories: Java; Tagged with: ; @ December 4th, 2010 12:39

需求: 通过Java端直接发布内容到Facebook Wall.

使用的API:
http://code.google.com/p/facebook-java-api/ 该API需要依附于HttpClient3, Json.  源自官方Java api.

Java端发布代码:

	/**
	 * update Facebook wall.
	 * @param infiniteSessionKey
	 * @param mesg
	 * @return
	 */
	public boolean publishMesg(String infiniteSessionKey, String mesg) {
		try {
			FacebookJsonRestClient facebook = new FacebookJsonRestClient(API_KEY, SECRET_KEY, infiniteSessionKey);
			FacebookJsonRestClient facebookClient = (FacebookJsonRestClient)facebook;
			facebookClient.stream_publish(mesg, null, null, null, null);
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}

对于普通用户:

1.  安装并授权程序

2. 获得infiniteSessionKey, Java端将使用infiniteSessionKey随时访问更新Facebook.

主要参考: http://blog.theunical.com/facebook-integration/facebook-java-api-example-to-publish-on-wall/

使用Twitter4J从Java桌面程序更新Twitter

Categories: Java; Tagged with: ; @ December 4th, 2010 12:15

功能需求:

Java端自动更新Twitter状态 – 不需要用户授权或输入Code.

步骤

1. 用户需要自行创建一个Twitter App (http://dev.twitter.com/apps)
2. 获得Consumer key&Secret,  Access Token&Secret 四对数据
3. 使用Twitter4J更新状态:

	/**
	 * 更新Twitter状态
	 * @param consumerKey
	 * @param consumerSecret
	 * @param accessToken
	 * @param accessTokenSecret
	 * @param mesg
	 * @return
	 */
	public boolean publishMesg(String consumerKey, String consumerSecret, String accessToken, String accessTokenSecret, String mesg) {
		try {
        	TwitterFactory tf = new TwitterFactory();

        	AccessToken accessTokenObj = new AccessToken(accessToken, accessTokenSecret); // 创建AccessToken, 以便直接访问Twitter
            Twitter twitter = tf.getOAuthAuthorizedInstance(consumerKey, consumerSecret, accessTokenObj); // 根据Consumer跟AccessToken获得Twitter实例
            twitter.updateStatus(mesg); // 更新状态
            return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}

Twitter4J地址: http://twitter4j.org – 只需Include一个jar就可以, 没有其他dependency;

关于Twitter4J:

1. 作者Yusuke Yamamoto(应该不是那个演员),

他还是Sina微博Java SDK的作者(依照该页面: http://open.t.sina.com.cn/wiki/index.php/SDK来看, 新浪默许之为官方SDK)

看Javaeye这几位无知的仁兄: http://www.javaeye.com/topic/638129 – API而已, 在Sina java SDK中发现几个Twitter4J没什么大不了的, 这个蛋扯的太大了.

2. 在TwitterFactory中, 作者似乎试图使用单例模式, 但看上去只是徒有getInstance()的方法, 未真正实现单例

SQL中判断时间

Categories: Java; Tagged with: ; @ November 19th, 2010 20:58

需求: (使用JDBC) 在SQL中增加时间限制

简单错误的写法:

SimpleDateFormat df = new SimpleDateFormat(“yyyy-MM-dd”);
String dateNow = df.format(new Date(System.currentTimeMillis())); //”2010-11-19″; //new Date(System.currentTimeMillis()).toString();
然后将dateNow加入到SQL中. maybe可工作, 但不能保证数据库平台迁移后仍可继续工作.

正确的解决方法, 使用PreparedStatement设定SQL参数:

StringBuilder sb = new StringBuilder("SELECT oue FROM OUEnroll oue WHERE oue.user_ID = ");
		sb.append(user.getUser_ID()).append("  AND (oue.dateStart IS NULL OR ").append("?2")...

// 省略若干
		select.setParameter(1, user.getUser_ID());
		select.setParameter(2, new Date(System.currentTimeMillis()));

JDBC会根据具体的数据库Driver处理Date并加入到SQL中.

 

话说今天看Struts2, HelloWorld都搞了半天

Categories: Java; Tagged with: ; @ October 16th, 2010 23:30

之前看过Hibernate, 看过一点Spring, 昨天组织要求全面发展再加把劲看下Struts.

心想写了这么久程序了, 无非就是配置几个XML, 加几个Jar File, 写个Action, 编个JSP不就完了? 结果就这么简单的事折腾的我错过了大娘水饺盖浇饭的供应时间 — 9点后永和豆浆/大娘水饺都没有米饭供应了, 妈的, 开个饭店还这么多P事.

(more…)

Newer Posts <-> Older Posts



// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.