在 java 中使用的 github 的授权码通过 scribe 库
Authorization code for github used in java via scribe library
我正在尝试访问 github api(https://api.github.com/user),如抄写库示例中所述
(https://github.com/scribejava/scribejava/blob/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/GitHubExample.java)
哪个return我这个授权url
但现在我必须提供上述link示例中提到的授权码
final Scanner in = new Scanner(System.in, "UTF-8");
System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
System.out.println();
// Obtain the Authorization URL
System.out.println("Fetching the Authorization URL...");
final String authorizationUrl = service.getAuthorizationUrl();
System.out.println("Got the Authorization URL!");
System.out.println("Now go and authorize ScribeJava here:");
System.out.println(authorizationUrl);
System.out.println("And paste the authorization code here");
System.out.print(">>");
final String code = in.nextLine();
System.out.println();
System.out.println("And paste the state from server here. We have set 'secretState'='" + secretState + "'.");
System.out.print(">>");
final String value = in.nextLine();
if (secretState.equals(value)) {
System.out.println("State value does match!");
} else {
System.out.println("Ooops, state value does not match!");
System.out.println("Expected = " + secretState);
System.out.println("Got = " + value);
System.out.println();
}
// Trade the Request Token and Verfier for the Access Token
System.out.println("Trading the Request Token for an Access Token...");
final OAuth2AccessToken accessToken = service.getAccessToken(code);
System.out.println("Got the Access Token!");
System.out.println("(The raw response looks like this: " + accessToken.getRawResponse() + "')");
System.out.println();
但问题是我怎样才能获得授权码,谁能告诉我授权码是什么?
到目前为止,您处于第 1 步:即,创建授权 URL 告知服务器应用程序(详细信息,例如您的客户端 ID、重定向 URL 等)
在任何 OAuth 流程中,都涉及 3 方
- 用户
- 正在请求访问令牌的应用程序
- 服务提供商(在本例中为Github)
假设我是您管理的网站上的 GitHub 用户。您的网站想要访问我驻留在 GitHub 上的数据。如果没有 access-token
.
,您的网站无法直接从 GitHub 检索我的任何受保护数据
如何获得此访问令牌?
- 您的网站在 GitHub 上注册为客户端并获得
client-secret
- 每次网站需要一些用户的
access-token
时,首先它通过发送识别参数从 authorization-url
到 GitHub 来识别自己。
在您的情况下,您需要将 authorization-url
粘贴到浏览器中才能继续。在生产环境中,您的网站应将用户重定向到 authorization-url
.
- Github 然后验证网站的标识详细信息,如果一切正常,它会询问用户(在本例中为我)是否要允许您的网站访问我受保护的数据。
- 如果我说是,GitHub 将调用您在
redirect_url
参数中指定的 URL 以及 request-token
(又名 authorization-code
)
- 您的网站将读取此
request-token
,使服务器调用 GitHub 并与 access-token
交换
- 一旦网站获得了我的
access-token
,它就可以向 GitHub 请求我的受保护数据。
我正在尝试访问 github api(https://api.github.com/user),如抄写库示例中所述 (https://github.com/scribejava/scribejava/blob/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/GitHubExample.java)
哪个return我这个授权url
但现在我必须提供上述link示例中提到的授权码
final Scanner in = new Scanner(System.in, "UTF-8");
System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
System.out.println();
// Obtain the Authorization URL
System.out.println("Fetching the Authorization URL...");
final String authorizationUrl = service.getAuthorizationUrl();
System.out.println("Got the Authorization URL!");
System.out.println("Now go and authorize ScribeJava here:");
System.out.println(authorizationUrl);
System.out.println("And paste the authorization code here");
System.out.print(">>");
final String code = in.nextLine();
System.out.println();
System.out.println("And paste the state from server here. We have set 'secretState'='" + secretState + "'.");
System.out.print(">>");
final String value = in.nextLine();
if (secretState.equals(value)) {
System.out.println("State value does match!");
} else {
System.out.println("Ooops, state value does not match!");
System.out.println("Expected = " + secretState);
System.out.println("Got = " + value);
System.out.println();
}
// Trade the Request Token and Verfier for the Access Token
System.out.println("Trading the Request Token for an Access Token...");
final OAuth2AccessToken accessToken = service.getAccessToken(code);
System.out.println("Got the Access Token!");
System.out.println("(The raw response looks like this: " + accessToken.getRawResponse() + "')");
System.out.println();
但问题是我怎样才能获得授权码,谁能告诉我授权码是什么?
到目前为止,您处于第 1 步:即,创建授权 URL 告知服务器应用程序(详细信息,例如您的客户端 ID、重定向 URL 等)
在任何 OAuth 流程中,都涉及 3 方
- 用户
- 正在请求访问令牌的应用程序
- 服务提供商(在本例中为Github)
假设我是您管理的网站上的 GitHub 用户。您的网站想要访问我驻留在 GitHub 上的数据。如果没有 access-token
.
如何获得此访问令牌?
- 您的网站在 GitHub 上注册为客户端并获得
client-secret
- 每次网站需要一些用户的
access-token
时,首先它通过发送识别参数从authorization-url
到 GitHub 来识别自己。 在您的情况下,您需要将authorization-url
粘贴到浏览器中才能继续。在生产环境中,您的网站应将用户重定向到authorization-url
. - Github 然后验证网站的标识详细信息,如果一切正常,它会询问用户(在本例中为我)是否要允许您的网站访问我受保护的数据。
- 如果我说是,GitHub 将调用您在
redirect_url
参数中指定的 URL 以及request-token
(又名authorization-code
) - 您的网站将读取此
request-token
,使服务器调用 GitHub 并与access-token
交换
- 一旦网站获得了我的
access-token
,它就可以向 GitHub 请求我的受保护数据。