java - vertx auth2 工作示例

标签 java oauth-2.0 vert.x

我正在尝试至少从 vert.x 官方文档中获取一些东西。

到底是什么意思here

代码:

String code = "xxxxxxxxxxxxxxxxxxxxxxxx"; // the code is provided as a url parameter by github callback call

oauth2.getToken(new JsonObject().put("code", code).put("redirect_uri", "http://localhost:8080/callback"), res -> {
  if (res.failed()) {
    // error, the code provided is not valid
  } else {
    // save the token and continue...
  }
});

我相信从那里

https://developers.google.com/identity/protocols/OAuth2 ,

授权流程:

我想向 github/google 发送授权代码以获得访问 token (这是我的最终目标)。那这个code就是授权码?

我想收到该代码,我需要先发送我的用户/凭证作为第一步吗?似乎错过了这一步。

问题是.. 例如,获取 github 的 oauth token 的完整流程/代码是什么?

--

尽我所能:

  1. 发送重定向到 github 登录页面,发送我的凭据和如何给我回电话的说明(我的服务器应用程序上的/auth-callback url)

      oauth2 = GithubAuth.create(vertx, clientId, applicationSecret);
      final String authorizationURI = oauth2.authorizeURL(new JsonObject()
                .put("redirect_uri", DOMAIN + ":" + PORT + "/auth-callback")
                .put("scope", "notifications")
                .put("state", "3(#0/!~"));
    
            context.response().putHeader("Location", authorizationURI)
                .setStatusCode(302)
                .end();
    
  2. 当我在登录时按回车键时,我希望收到回电...并收到...授权码?它在哪里??

我也是这样的:

           router.get("/auth-callback/").handler( (RoutingContext context) -> {

            oauth2.getToken(tokenConfig, res -> {
                if (res.failed()) {
                    System.err.println("Access Token Error: " + res.cause().getMessage());
                } else {
                    System.out.println("Got access");
                    // Get the access token object (the authorization code is given from the previous step).
                    final AccessToken token = res.result();

                    System.out.println("Got a token! " + token.toString());
                }
            });

        }
    );

所以.. 结果我再也没有收到这个 url 的回电。似乎是因为 .get(.. 与/auth-callback&scope=notifications&state=.. 等所有参数不匹配。什么是正确的 .get?

tokenConfig 应该是什么。这假设包含验证码

就像我说的:一个可行的例子会很好。该文档似乎没有太大帮助。

最佳答案

Oauth2 指定了几个流程来获取 token 。最常见的是访问代码和密码流程。在使用交互式 Web 应用程序(需要用户交互,而不是 api 端点)时,您可能希望使用访问代码流(简称代码)。

在此流程中,您需要遵循一个序列才能获得 token 。 GitHub 的详细教程可以在这里看到:

http://vertx-tutorials.jetdrone.xyz/tutorials/oauth2/github/

关于java - vertx auth2 工作示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46555165/

相关文章:

java - 如何在 Yosemite 上获取 1.7.0_45 JDK?

java - Google App Engine + AWS S3 文件保护!

kotlin - Vertx和Kotlin协程永远挂起

java - Vertx.io 调度任务

java - 比较两个通用复杂对象java

java - Libgdx 无法加载纹理问题

cocoa - 如何监听 native Cocoa 应用程序的 OAuth2 重定向 uri

oauth-2.0 - WSO2 API Manager 客户端凭据更新 token

node.js - Discord Oauth2 加入公会

java - Vertx 因多个文件上传请求而变慢