Java を使用してカスタム git 資格情報ヘルパーを開発しており、バックグラウンドで Azure デバイス コード フローを実装しようとしています。実装の一環として、ユーザーが認証に使用する URL とデバイス コードをコンソールに出力し、コンソールで ENTER を押す必要がありますが、URL とデバイス コードを出力した後に git ターミナルがハングします。以下は私のコードです。
public class GitHelper {
public static void main(String[] args) {
String op = args[0];
switch (op) {
case "get":
System.out.printf("username=%s\n", "oauth2");
System.out.printf("password=%s\n", getToken());
break;
default:
System.out.println(args[0]);
break;
}
}
}
public void waitForUser() {
System.out.println("To sign in, use a web browser to open the page " + URL
+ "\n and enter the code " + code
+ " to authenticate then return to this window and press ENTER.");
Callable<String> userInput = () -> new Scanner(System.in).nextLine();
String res = getUserInputWithTimeout(TIMEOUT, userInput); // 30s until timeout
if (res != null) {
System.out.println("Validating Authentication ...");
}
}
私は自分のコードを jar としてバンドルしており、gitconfig の下にあります。
[credential]
helper = "!java -jar D:/config/git-credential-helper.jar"
git clone のような git 操作を行うと、警告を下回り、そこでハングアップします
warning: invalid credential line: To sign in, use a web browser to open the page www.login.com and enter the code 324523453425 to authenticate then return to this window and press ENTER.