2013-09-02 5 views
0

Pourriez-vous m'aider à m'authentifier sur Google Plus avec OAuth2? Je suis en mesure d'obtenir la fenêtre d'authentification pour afficher, se connecter et confirmer mon application avec mon compte, mais pour une raison quelconque, l'événement d'action n'est jamais déclenché. Je reçois un écran disant: Veuillez copier ce code, passez à votre application et collez-le ici.CodeNameOne Google Plus OAuth2

Comment déclencher l'événement d'action?

Merci d'avance.

Edit:

Mon code est le suivant:

Salut Shai, merci pour la réponse, mon code pour l'authentification est la suivante:

Oauth2 auth2 = new Oauth2("https://accounts.google.com/o/oauth2/auth", "Client_Id", "urn:ietf:wg:oauth:2.0:oob or http://localhost", "openid", "https://accounts.google.com/o/oauth2/token", "Client_Secret"); 


Oauth2.setBackToParent(true); 
auth2.showAuthentication(new ActionListener() { 
    public void actionPerformed(ActionEvent evt) { 
     if (evt.getSource() instanceof String) { 
      String token = (String) evt.getSource(); 
      String expires = Oauth2.getExpires(); 
      GOOGLE_TOKEN = token; 
      System.out.println("recived a token " + token + " which expires on " + expires); 
      //store token for future queries. 
     } else { 
      Exception err = (Exception) evt.getSource(); 
      err.printStackTrace(); 
      Dialog.show("Error", "An error occurred while logging in: " + err, "OK", null); 
     } 
    } 
}); 

Le "auth2.showAuthentication" fonctionne bien, et vous permet de passer à travers pour l'utilisateur d'autoriser l'application, mais une fois que l'utilisateur autorise l'application le "actionlistener" n'est jamais appelé, je ne frappe jamais le rappel. Comment puis-je forcer le rappel à tirer pour retourner le jeton?

+0

Ce n'est pas clair pour moi ce que vous essayez exactement de faire et comment vous l'avez implémenté. Si vous fournissez des informations supplémentaires sur la manière dont vous avez utilisé Codename One et que nous supposons que l'API OAuth2 est disponible, nous serons peut-être en mesure de vous aider. –

+0

Suivra avec le code maintenant –

+0

Est-ce: urn: ietf: wg: oauth: 2.0: oob ou http: // localhost la chaîne réelle que vous avez utilisée? Qu'avez-vous défini lors de votre inscription à la clé de développeur? Vous devez utiliser cette URL depuis la redirection google envoie devrait vous envoyer à cet endroit –

Répondre

0

J'ai eu du mal avec le même problème. J'ai finalement découvert que le problème réside dans la configuration du WebBrowser à l'intérieur Oauth2.createLoginComponent(): le gestionnaire onStart() attend une URL commençant par votre URI de redirection fourni, mais cette URL n'apparaît jamais. La dernière page de Google, celle qui apporte le jeton, a une URL commençant par "https://accounts.google.com/o/oauth2/approval?", et non par l'URL de redirection.

Selon le Google's documentation le jeton sera fourni dans le titre de la page, mais cela ne semble pas être le cas avec le navigateur natif dans CodeName One. J'ai donc fini par gratter le document HTML pour un input avec id="code", dont la valeur est le jeton que nous recherchons. Le raclage doit avoir lieu après que la page a été chargée, c'est-à-dire dans l'événement onLoad(), pas dans onStart().

Espérons que cela aide, cela a fonctionné pour moi.