2013-09-02 2 views
0

Может ли кто-нибудь помочь мне с аутентификацией в Google Plus с помощью OAuth2? Я могу получить окно аутентификации для отображения, входа в систему и подтверждения моего приложения с моей учетной записью, но по какой-то причине событие действия никогда не запускается. Я получаю экран, говорящий, пожалуйста, скопируйте этот код, переключитесь на свое приложение и вставьте его там.CodeNameOne Google Plus OAuth2

Как я могу запустить мероприятие?

Заранее спасибо.

Edit:

Мой код выглядит следующим образом:

Привет Шай, спасибо за ответ, мой код для аутентификации выглядит следующим образом:

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); 
     } 
    } 
}); 

"auth2.showAuthentication" хорошо работает и позволяет вам пройти авторизацию для пользователя, но затем, как только пользователь авторизует приложение, «actionlistener» никогда не вызывается, я никогда не ударил обратный вызов. Как я могу заставить обратный вызов запустить огонь, чтобы вернуть токен?

+0

Непонятно, что именно вы пытаетесь сделать и как вы это реализовали. Если вы предоставите дополнительную информацию о том, как вы использовали Codename One, и я предполагаю, что API OAuth2 мы можем вам помочь. –

+0

Будет следить за кодом –

+0

Это: urn: ietf: wg: oauth: 2.0: oob или http: // localhost фактическая строка, которую вы использовали? Что вы определили, когда подписались на ключ разработчика? Вы должны использовать этот URL, так как перенаправление отправлений Google отправляет вас в это место –

ответ

0

Я борюсь с той же проблемой. Наконец, я выяснил, что проблема заключается в настройке WebBrowser внутри Oauth2.createLoginComponent(): обработчик onStart() ждет URL-адреса, начиная с вашего предоставленного URL-адреса перенаправления, но этот URL-адрес никогда не появляется. На последней странице Google, в которой содержится токен, есть URL, начинающийся с "https://accounts.google.com/o/oauth2/approval?", а не с URI перенаправления.

В соответствии с Google's documentation токен будет предоставлен внутри заголовка страницы, но это не похоже на собственный браузер в CodeName One. Поэтому я закончил соскабливать HTML-документ для input с id="code", чье значение - это токен, который мы ищем. Скребок должен выполняться после загрузки страницы, то есть в событии onLoad(), а не в onStart().

Надеюсь, это поможет, это сработало для меня.