我想直接深入链接到Facebook iFrame Canvas中的GWT应用页面。
第一部分很简单,使用GWT的历史记录标记,其URL为:
http://www.example.com/MyApp/#page1
会在我的应用中打开page1。
Facebook Apps使用以下应用程序网址:
http://apps.facebook.com/myAppName
框架我的Canvas回调网址
http://www.example.com/MyApp/
有没有办法指定画布回调网址(或书签网址),这会将用户带到特定网页而非索引页?
为什么呢?你可能会问。除了深层链接的所有好处......
我希望“转到应用程序”网址将用户带到带有营销材料的索引页面(画布回调网址)
我希望“书签网址”将(可能会返回)用户带到登录页面并绕过下载营销内容(以及那个巨大的SWF文件)。
答案 0 :(得分:4)
这可能看起来像是一个黑客,但在这里。
Facebook允许应用程序将参数添加到网址?x = 123
所以我正在检查窗口位置,看它是否包含我的特殊“页面”参数并加载该页面。以下是我的解决方案,因为我正在使用GWT + gwt-presenter的PlaceManager类。
应用程序深层网址最终为http://apps.facebook.com/myAppName?page=page1
EventBus eventBus = injector.getEventBus();
// Load PlaceManager so it can start listening
PlaceManager placeManager = injector.getPlaceManager();
String currentPlace = History.getToken();
String place = Window.Location.getParameter( "page" );
if (place != null && !place.isEmpty()) {
// send user to the place on the URL line
eventBus.fireEvent( new PlaceRequestEvent( new PlaceRequest( new Place (place) ) ));
} else if ("".equals(currentPlace)) {
// Nothing in URL, load default GWTpage
eventBus.fireEvent( new PlaceRequestEvent(new PlaceRequest( IndexPresenter.PLACE)));
} else {
// fire a body to the Place Manager to activate the requsted Place
placeManager.fireCurrentPlace();
}