【问题标题】:Retrieving Google Authorization Code through OAuth2.0 in JavaJava中通过OAuth2.0检索谷歌授权码
【发布时间】:2013-10-25 21:52:43
【问题描述】:

我正在开发一个桌面项目,该项目需要使用 OAuth2.0 对 Google Calendar API 进行 Google 授权。使用的语言是java。

目前要授权项目,我必须使用java.swt.Desktop.getDesktop().browse(url)打开浏览器,点击“接受”按钮,复制重定向页面中的授权码并粘贴进去我的应用程序。并且用户必须手动关闭网页。挺麻烦的。

是否有更好、更用户友好的方法来实现此授权过程?我想要实现的最终流程只是应用打开授权页面,用户点击“接受”,页面自动关闭,软件获得授权。我在其他应用程序中看到过这种程序。只是我不知道如何实现这一点。

提前致谢。

【问题讨论】:

    标签: java oauth-2.0 authorization google-api-java-client


    【解决方案1】:

    您需要提供一个回调URL。我建议使用像 Scribe 这样的 java 库来完成此任务 - 有一个很好的 getting started page 和大量示例。

    编辑 1
    这是一个设置回调 url 的示例

    String apiKey = "your_app_id";
    String apiSecret = "your_api_secret";
    OAuthService service = new ServiceBuilder()
                              .provider(FacebookApi.class)
                              .apiKey(apiKey)
                              .apiSecret(apiSecret)
                              .callback("myApp://oauthcallback")
                              .build();
    

    您需要在桌面应用程序中打开嵌入式浏览器,然后转到 OAuthService 提供的 oauth url。一旦用户批准了您的应用程序,嵌入式浏览器将被重定向到您的回调 URI。您需要检测到这一点,然后提取回调中包含的 oauth 信息。

    我从来没有通过桌面应用程序做到这一点(它总是在 servlet/jsp - web 应用程序中)。但是,如果您搜索如何在 windows 中检测 URI 上的重定向,希望您会找到一些示例。

    【讨论】:

    • 谢谢。我刚刚尝试了 Scribe pages 中给出的示例,发现在构建 Verifier 时我仍然需要从浏览器中复制代码,对吗?我刚刚尝试的示例是这样的:github.com/fernandezpablo85/scribe-java/blob/master/src/test/… 我是否有可能消除此复制和粘贴过程,因为对于应用程序而言,它看起来太愚蠢了,无法拥有这样的东西。再次感谢您的回复。 :)
    猜你喜欢
    • 1970-01-01
    • 2017-05-27
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多