自己写代码 - facebook4gwt Demo
来源:互联网 发布:数据内勤个人工作总结 编辑:程序博客网 时间:2024/04/30 09:58
GoogleDoc地址:http://docs.google.com/View?id=ddm59qt3_15gxxzj9f6
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
PC时代,用户和软件,都是孤立的。互联网时代,网站把用户连了起来。而到了现在,用户又在把网站连起来。
Web应用不再是那种只读的网页,追求用户交互的同时你必然需要关心和你交互的是个什么人。因此越来越多各色Login按钮出现在各色的网站。
人类发展的必然就是一旦某种功能成了普遍的需求,就会出现新的分工,新的职业,甚至,新的平台。现在我们有了SNS。
这个例子用的是eclipse3.5+GWT2.0.1+facebook4gwt1.0.8。
1.在Facebook上注册应用。
进入http://www.facebook.com/developers/createapp.php创建新的应用,我取了个名字叫fb4gwtdemo。Facebook什么都好,就是屏蔽了face这个单词让我有些不爽,有点天朝的风范。然后这里能看到一个API Key和Secret以后有用,其他都不用管。在Eclipse中创建gwt工程取名facebook4gwtdemo,什么都不改先Run一下,个人觉得这是个好习惯。本地server的链接是http://127.0.0.1:8888/Facebook4gwtdemo.html?gwt.codesvr=127.0.0.1:9997,回到刚才注册的页面,选到Connect,把这个地址填写到Connect URL。
这样呢,一会儿利用Facebook登陆验证之后就会转到这个页面还可以继续调试。
2.添加facebook4gwt库
首先肯定要下载这个库了,地址在此http://code.google.com/p/facebook4gwt/downloads/list,当前版本是1.0.8。我在工程目录下新建了一个lib目录,把下下来的facebook4gwt-1.0.8.jar放在了这里。然后再eclipse里面选中工程属性->Java Build Path->Libraries,Add External JARs,添加这个jar。
现在eclipse已经可以找到facebook4gwt里面的类了,但是还没完。打开facebook4gwtdemo.gwt.xml,在module名下添加
<inherits name="com.reveregroup.gwt.facebook4gwt.Facebook4gwt" />,看起来就像
<inherits name="com.reveregroup.gwt.facebook4gwt.Facebook4gwt" />
然后在war下面,和html文件同一个目录下创建一个xd_receiver.htm。里面写
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>xd</title>
</head>
<body>
<script
src="http://static.ak.facebook.com/js/api_lib/v0.4/XdCommReceiver.js"
type="text/javascript"></script>
</body>
</html>
这个是Facebook提供的Javascript库。
只有这样,facebook4gwt才真正可以用了。
3.开始动手改代码
该开始改代码了,先改那个自动生成的Facebook4gwtdemo.html,现在重点是Facebook Connect,gwt的问题就尽量简化,把html里那个table删掉世界也就清净了。然后改EntryPoint,Facebook4gwtdemo.java,把类里面的东西全删了,然后再添加一个onModuleLoad()方法。在这里面添加一个Connect with Facebook的按钮,一个登录用户的头像。
在Facebook4gwtdemo里先创建一个String存放API Key,把刚才注册的得到的那一大串拿过来。
再添加一个LoginButton,这个类是facebook4gwt里面的,在com.reveregroup.gwt.facebook4gwt下面。
然后再添加一个Image对象,用来显示用户头像。
private LoginButton loginButton = new LoginButton();
private Image image = new Image();
然后在onModuleLoad里调用Facebook.init(APIKey);然后把loginButton和image添加到RootPanel。然后调用Facebook.init(APIKey);
RootPanel.get().add(loginButton);
RootPanel.get().add(image);
Facebook.init(APIKey);
}
现在试一下,已经可以看到Facebook Connect按钮了。点了之后弹出Facebook登录框,登录之后回到刚才在Connect URL设置的地址也就回到了调试的页面。
继续,时间有点晚了写快一点。
在onModuleLoad里添加
@Override
public void loginStatusChanged(FacebookLoginEvent event) {
updateUserInfo();
}
});
在Facebook4gwtdemo中添加函数updateUserInfo
if (Facebook.isLoggedIn()) {
Facebook.APIClient().users_getLoggedInUser(new AsyncCallback<FacebookUser>() {
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
}
@Override
public void onSuccess(FacebookUser result) {
image.setUrl(result.getPic());
}
}, UserField.PIC);
}
}
OK,很好。跟进去看了看,facebook4gwt就是把Facebook提供的Javascript接口用native函数的方式封装了一遍,这样就不用自己写那种被注释掉的代码。Facebook的API很大一部分都是取用户的信息,这些函数都被统一到一起,然后用一个UserField枚举类型来定义。看了下这样子的话便于facebook4gwt的实现,UserField里面有一份枚举到字符串的映射,然后这些字符串可以配合native函数动态去调用Facebook提供的Javascript接口,callback函数也以参数的形式传递给Javascript接口,这样就实现了Javascript的接口的gwt封装。
BTW,在LoginButton的构造函数传入一个true作参数,这样当你登录之后这个LoginButton会自动变成LogoutButton。
- 自己写代码 - facebook4gwt Demo
- 自己写代码
- 自己写的代码
- C代码写文件demo
- 自己写的3D游戏DEMO
- 自己写的定位的小DEMO
- 自己写的关于BroadcastReceiver的demo
- 自己写一个hibernate的小demo
- 自己写的frameset代码
- 自己写的分页代码
- 自己写的代码文件
- 自己写的代码:时钟
- 自己写的代码,备忘
- 自己写的代码2
- 自己写的代码生成器
- 汉诺塔代码自己写的
- 排序 自己总结 自己写代码
- JS动态增加行自己写的一个DEMO
- vim配置文件 .vimrc
- 今天我在上班
- Struts 2 in Action 中文版出版了!
- JAVA教程 Swing用户界面设计入门
- C#自动登录网页浏览页面 抓取数据
- 自己写代码 - facebook4gwt Demo
- 大年初一,新的开始
- 杜老师的一天--沟通不良是结果,关系不良是原因
- 阿拉斯加
- 《新观察家》:十年来世界最有影响100人
- 数组元素的函数遍历
- 开通博客
- 优秀程序员的45个习惯
- 算算你啥时死掉