0

谁能帮助我使用 OAuth2 对 Google Plus 进行身份验证?我可以让身份验证窗口显示、登录并使用我的帐户确认我的应用程序,但由于某种原因,操作事件从未被触发。我得到一个屏幕说请复制此代码,切换到您的应用程序并将其粘贴到那里。

我如何让动作事件触发?

提前致谢。

编辑:

我的代码如下:

您好 Shai,感谢您的回复,我的身份验证代码如下:

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”就不会被调用,我永远不会点击回调。如何强制回调触发以返回令牌?

4

1 回答 1

0

我一直在努力解决同样的问题。我终于发现问题在于WebBrowser内部的设置Oauth2.createLoginComponent()onStart()处理程序等待一个以您提供的重定向 URI 开头的 URL,但该 URL 从未出现。最终的 Google 页面,即带来令牌的页面,有一个以 开头的 URL "https://accounts.google.com/o/oauth2/approval?",而不是重定向 URI。

根据Google 的文档,令牌将在页面标题内提供,但 CodeName One 中的本机浏览器似乎并非如此。因此,我最终从 HTML 文档中抓取了一个inputwith id="code",它的值是我们正在寻找的令牌。抓取必须在页面加载后进行,即在onLoad()事件中,而不是在onStart().

希望这会有所帮助,它对我有用。

于 2015-03-13T13:06:40.220 回答