Аутентифицировать твиттер-бота с помощью статических секретов?

Мой план:

Я пишу бота, который будет время от времени отправлять твиты с помощью библиотеки tweetinvi (https://github.com/linvi/tweetinvi).

В настоящее время бот использует токен доступа и секрет, которые я сгенерировал в своей консоли разработчика.

Проблема:

Теперь бот будет отправлять твиты через мой личный кабинет. Вот почему я создал новую вторичную учетную запись, которую следует использовать для твитов в будущем.

Но как мне теперь аутентифицировать бота?

  1. Новая учетная запись не является учетной записью разработчика, и я не вижу возможности сгенерировать токен доступа и секрет в настройках учетной записи.

  2. Более того, я не думаю, что обычный щелчок oauth по значку Twitter и вход в систему для входа в Twitter - это правильный выбор для моего бота, потому что у меня нет веб-сайта или сеанса браузера, а просто программа, которая работает где угодно.

Разве я не могу просто создать какой-то статический токен доступа и секрет для моей дополнительной учетной записи?

Что бы вы посоветовали мне сделать, если это невозможно?


person Jannik    schedule 03.10.2020    source источник


Ответы (2)


Да, вы можете создать токен доступа и секрет для своей дополнительной учетной записи. Стандартный способ сделать это - реализовать вход в Twitter в приложении, для чего потребуется веб-сервер.

Есть несколько альтернативных вариантов:

  1. Вы можете использовать twurl, инструмент командной строки, предоставляемый Twitter. Вам нужно будет установить Ruby, а затем установить twurl. Используя twurl, вы можете запускать

twurl authorize --consumer-key [your API token] --consumer-secret [your API secret]

Затем будет предоставлен URL-адрес, который вы должны открыть в своем браузере. Аутентифицируйте это в своей дополнительной учетной записи и введите ПИН-код в свой терминал. Токен и секрет учетной записи будут помещены в скрытый файл с именем .twurlrc в вашем домашнем каталоге, и вы сможете использовать их для своего бота так же, как в настоящее время используете токены основной учетной записи.

  1. Для сделай то же самое. Это немного проще, поскольку вам не нужно устанавливать Ruby, и вы можете просто загрузить двоичный файл Windows. Вы захотите переименовать двоичный файл с расширением .exe.

tw-oob-oauth.exe --key [your API token] --secret [your API secret]

Это выведет токен и секрет учетной записи на терминал после того, как вы пройдете через веб-поток.

person Andy Piper    schedule 04.10.2020

Для аутентификации через Tweetinvi вы можете следовать руководству здесь: https://linvi.github.io/tweetinvi/dist/authentication/authentication.html.

var appClient = new TwitterClient("CONSUMER_KEY", "CONSUMER_SECRET");

// Start the authentication process
var authenticationRequest = await appClient.Auth.RequestAuthenticationUrlAsync();

// Go to the URL so that Twitter authenticates the user and gives him a PIN code.
Process.Start(new ProcessStartInfo(authenticationRequest.AuthorizationURL)
{
    UseShellExecute = true
});

// Ask the user to enter the pin code given by Twitter
Console.WriteLine("Please enter the code and press enter.");
var pinCode = Console.ReadLine();

// With this pin code it is now possible to get the credentials back from Twitter
var userCredentials = await appClient.Auth.RequestCredentialsFromVerifierCodeAsync(pinCode, authenticationRequest);

// You can now save those credentials or use them as followed
var userClient = new TwitterClient(userCredentials);
var user = await userClient.Users.GetAuthenticatedUserAsync();

Console.WriteLine("Congratulation you have authenticated the user: " + user);
person Linvi    schedule 05.10.2020