使用静态秘密验证 Twitter 机器人?
Authenticate twitter bot with static secrets?
我的计划:
我正在写一个机器人,它会不时地使用库 tweetinvi (https://github.com/linvi/tweetinvi) 发送一些推文。
该机器人当前正在使用我在开发者控制台中生成的访问令牌和密码。
问题:
机器人现在将使用我的个人帐户发送推文。这就是为什么我创建了一个新的辅助帐户,将来应该用于推文。
但我现在如何验证机器人?
新帐户不是开发者帐户,我在帐户设置中没有看到任何生成访问令牌和密码的选项。
此外,我不认为通常的 oauth“点击 twitter 图标并登录到 twitter”登录是我的机器人的正确选择,因为我没有网站或浏览器会话,只是一个随处运行的程序。
我不能为我的辅助帐户创建某种静态类型的访问令牌和密码吗?
如果那不可能,你会建议我做什么?
是的,您可以为您的辅助帐户创建访问令牌和密码。执行此操作的标准方法是在应用程序中使用 Twitter 实现 sign-in,这需要 Web 后端。
有几个备选方案:
- 您可以使用
twurl
,这是一个 Twitter-provided 命令行工具。您需要安装 Ruby,然后安装 twurl
。使用 twurl
你可以 运行
twurl authorize --consumer-key [your API token] --consumer-secret [your API secret]
这将提供一个 URL 您应该在浏览器中打开。将此验证到您的辅助帐户,然后将 PIN 码输入您的终端。帐户令牌和密码将放置在您主目录中名为 .twurlrc
的隐藏文件中,您可以像当前使用主帐户令牌一样将它们用于您的机器人。
- 您可以使用 another utility called tw-oob-oauth-cli 来做同样的事情。这更容易一些,因为您不需要安装 Ruby,只需下载 Windows 二进制文件即可。您需要使用 .exe 扩展名重命名二进制文件。
tw-oob-oauth.exe --key [your API token] --secret [your API secret]
这将在您完成网络流程后在终端上输出帐户令牌和密码。
要通过 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);
我的计划:
我正在写一个机器人,它会不时地使用库 tweetinvi (https://github.com/linvi/tweetinvi) 发送一些推文。
该机器人当前正在使用我在开发者控制台中生成的访问令牌和密码。
问题:
机器人现在将使用我的个人帐户发送推文。这就是为什么我创建了一个新的辅助帐户,将来应该用于推文。
但我现在如何验证机器人?
新帐户不是开发者帐户,我在帐户设置中没有看到任何生成访问令牌和密码的选项。
此外,我不认为通常的 oauth“点击 twitter 图标并登录到 twitter”登录是我的机器人的正确选择,因为我没有网站或浏览器会话,只是一个随处运行的程序。
我不能为我的辅助帐户创建某种静态类型的访问令牌和密码吗?
如果那不可能,你会建议我做什么?
是的,您可以为您的辅助帐户创建访问令牌和密码。执行此操作的标准方法是在应用程序中使用 Twitter 实现 sign-in,这需要 Web 后端。
有几个备选方案:
- 您可以使用
twurl
,这是一个 Twitter-provided 命令行工具。您需要安装 Ruby,然后安装twurl
。使用twurl
你可以 运行
twurl authorize --consumer-key [your API token] --consumer-secret [your API secret]
这将提供一个 URL 您应该在浏览器中打开。将此验证到您的辅助帐户,然后将 PIN 码输入您的终端。帐户令牌和密码将放置在您主目录中名为 .twurlrc
的隐藏文件中,您可以像当前使用主帐户令牌一样将它们用于您的机器人。
- 您可以使用 another utility called tw-oob-oauth-cli 来做同样的事情。这更容易一些,因为您不需要安装 Ruby,只需下载 Windows 二进制文件即可。您需要使用 .exe 扩展名重命名二进制文件。
tw-oob-oauth.exe --key [your API token] --secret [your API secret]
这将在您完成网络流程后在终端上输出帐户令牌和密码。
要通过 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);