Question

J'essaie d'implémenter "Twitter" Connectez-vous pour mon application Web.J'utilise scribe pour simplifier les choses un peu.

Ma mise en œuvre Entreprise le mécanisme RPC GWT pour récupérer l'URL d'autorisation au client afin que le client puisse appeler une fenêtre contextuelle pour rediriger vers l'URL d'autorisation.

Toutefois, lorsque l'URL est ouverte sur la nouvelle onglet et la connexion utilisateur Connexion avec Twitter Compte, la page fournit le numéro de code PIN (à partir de ce site: https://api.twitter.com/oauth/authorize ) qui doit être saisi dans l'org.scribe.model.modifier

Ce type d'approche sera encombrant aux utilisateurs.Ce qui est nécessaire, c'est que lorsque l'utilisateur a tapé dans le nom d'utilisateur / mot de passe Twitter qui devrait être.Ou au moins automatiser tous les autres processus.

Est-ce que je manque quelque chose?

Voici mon code:

    twitterLogin.addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            TwitterService.Util.getInstance().getAuthorizationUrl(new AsyncCallback<String>() {
                @Override
                public void onSuccess(String result) {
                    if (result != null)
                        Window.open(result, "__blank", null);
                }

                @Override
                public void onFailure(Throwable caught) {

                }
            });             
        }
    });

Était-ce utile?

La solution

Pour authentifier avec OAuth, vous devez envoyer 2 demandes au serveur d'authentification: - premier à obtenir le "jeton de demande" - alors pour obtenir le "jeton d'accès"

Twitter ouvre la page d'authentification dans une nouvelle fenêtre où ils peuvent taper leur nom d'utilisateur / mot de passe Twitter, afin qu'elles soient attendues.

if (req.getRequestURI().equals("/twitter")) {
    Token requestToken = service.getRequestToken();
    System.out.println("Got the Request Token!" + requestToken.getToken());
    session = request.getSession(true);
    session.setAttribute("TOKEN", requestToken);
    response.sendRedirect(service.getAuthorizationUrl(requestToken));
} else if (req.getRequestURI().equals("/twitter/callback")) {
    String code = request.getParameter("oauth_verifier");
    System.out.println("Verifier :: " + code);
    System.out.println("service.getRequestToken()" + service.getRequestToken());
    session = request.getSession(false);
    Token requestToken = (Token) session.getAttribute("TOKEN");
    System.out.println("requestToken from Session " + service.getRequestToken().getToken() + " Secr" + service.getRequestToken().getSecret());

    if (code != null && !code.isEmpty()) {
        Verifier verifier = new Verifier(code);
        Token accessToken = service.getAccessToken(requestToken, verifier);
        OAuthRequest req = new OAuthRequest(Verb.GET, OAUTH_PROTECTED_URL);
        service.signRequest(accessToken, req);
        Response res = req.send();
        response.setContentType("text/plain");
        response.getWriter().println(res.getBody());
    }
}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top