我正在尝试至少从 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 的完整流程/代码是什么?
--
尽我所能:
发送重定向到 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();
当我在登录时按回车键时,我希望收到回电...并收到...授权码?它在哪里??
我也是这样的:
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/