Question

Je voudrais un lien direct vers une page d'application GWT dans un iFrame Facebook Canvas.

La première partie est simple en utilisant le jeton d'histoire de GWT avec des URL comme:

http://www.example.com/MyApp/#page1

qui ouvrirait page1 dans mon application.

Facebook Apps utilisent une URL d'application comme:

http://apps.facebook.com/myAppName

qui encadre mon URL toile Callback

http://www.example.com/MyApp/

Y at-il un moyen de spécifier une URL de rappel de toile (ou l'URL de signet) qui l'utilisateur vers une page spécifique plutôt que la page d'index?

Pourquoi? tu peux demander. En plus de tous les avantages des liens profonds ...

  • Je veux que le "Aller à l'application" URL pour les utilisateurs vers une page d'index w / matériel de marketing (l'URL de rappel de toile)

  • Je veux que le « favori URL » à prendre (probablement retour) utilisateurs vers une page de connexion et de contourner le téléchargement du contenu marketing (et énorme fichier SWF).

Était-ce utile?

La solution

Cela peut sembler être un hack, mais ici il va.

Facebook permet à l'application de virer de bord sur les paramètres à l'url? X = 123

Je vérifie l'emplacement de la fenêtre pour voir si elle contient mon paramètre spécial « page » et charger cette page. Ci-dessous, ma solution étant donné que j'utilise la classe PlaceManager de GWT + GWT-présentateur.

L'application url profonde finit par être 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();
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top