Создавая бот Discord для обновления роли пользователя как на сервере Discord, так и в группе Roblox, я постоянно сталкивался с проблемой аутентификации. Я использую Discord JDA для создания бота и этот URL: https://groups.roblox.com/v1/groups/ {groupId} / users / {userId}? RoleId = {roleId} для обновления роли пользователя в группе. Я также использую библиотеку httpcomponents Apache для отправки запроса PATCH на URL. Я попытался использовать файлы cookie, используя BasicCookieStore из httpcomponents Apache, добавив cook ie .ROBLOSECURITY с токеном или кодом .ROBLOSECURITY моей учетной записи и установив BasicCookieStore для HttpClients в качестве BasicCookieStore, о котором я только что упомянул. Я также попытался установить заголовок .ROBLOSECURITY в переменной HttpPatch в качестве токена или кода .ROBLOSECURITY моей учетной записи, но все равно не повезло. В приведенном ниже коде закомментированные части - это метод cook ie, а остальное - это метод заголовка, который я пробовал. Когда я запустил код и выполнил команду, в ответе просто написано Authorization has been denied for this request
. Я искал в Google несколько часов, но все равно не повезло. На форумах разработчиков Roblox тоже ничего не говорится, и я все равно не могу публиковать сообщения на форумах разработчиков Roblox. У кого-нибудь есть идеи, как аутентифицировать запрос?
public class TestRoleCommand extends SimpleCommand {
public TestRoleCommand() {
super("testrole", "test role", "testrole");
}
@Override
public void onCommand(MessageReceivedEvent event, List<String> args) {
try {
/*
*BasicCookieStore cookieStore = new BasicCookieStore();
*BasicClientCookie cookie = new BasicClientCookie(".ROBLOSECURITY", "{token}");
*cookieStore.addCookie(cookie);
*/
CloseableHttpClient client = HttpClientBuilder.create().setUserAgent("DiscordBot")./*setDefaultCookieStore(cookieStore).*/build();
HttpPatch patch = new HttpPatch("https://groups.roblox.com/v1/groups/5677278/users/983980640?roleId=37376856");
patch.setHeader(".ROBLOSECURITY", "{token}");
HttpResponse response = client.execute(patch);
StringBuffer buffer = new StringBuffer();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()))) {
String line;
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
}
System.out.println(buffer.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}