Как я могу аутентифицировать запрос PATCH к API группы Roblox для обновления роли пользователя? - PullRequest
0 голосов
/ 01 августа 2020

Создавая бот 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();
        }
    }
}
...