kensho/src/bin/register.rs

54 lines
1.6 KiB
Rust

use megalodon::generator;
use std::env;
#[tokio::main]
async fn main() {
env_logger::init();
let Ok(url) = env::var("MASTODON_URL") else {
println!("Specify MASTODON_URL!!");
return;
};
let client = generator(megalodon::SNS::Mastodon, url, None, None);
let options = megalodon::megalodon::AppInputOptions {
scopes: Some(["read".to_string()].to_vec()),
..Default::default()
};
match client.register_app("kensho".to_string(), &options).await {
Ok(app_data) => {
let client_id = app_data.client_id;
let client_secret = app_data.client_secret;
println!("Authorization URL is generated");
println!("{}", app_data.url.unwrap());
println!("Enter authorization code from website: ");
let mut code = String::new();
std::io::stdin().read_line(&mut code).ok();
match client
.fetch_access_token(
client_id,
client_secret,
code.trim().to_string(),
megalodon::default::NO_REDIRECT.to_string(),
)
.await
{
Ok(token_data) => {
println!("access_token: {}", token_data.access_token);
if let Some(refresh) = token_data.refresh_token {
println!("refresh_token: {}", refresh);
}
}
Err(err) => {
println!("{:#?}", err);
}
}
}
Err(err) => {
println!("{:#?}", err);
}
}
}