Add API to get Mastodon new Authorization OAUTH URL

This commit is contained in:
Bofh 2021-11-25 15:53:32 +01:00
parent 6338397650
commit 3ad1d22f46
1 changed files with 54 additions and 0 deletions

View File

@ -0,0 +1,54 @@
<?php require '/src/base.php' ?>
<?php
$instance = resolve_instance($_GET['instance'] ?? '');
if ($instance === false) {
http_response_code(400);
die(json_encode([
'status' => 'error',
'message' => lr('error.instance_not_exists',
'Instance does not exist or is incorrect.')
]));
}
$app_name = conf('app_name', 'RealFan');
$site_name = conf('site_name', 'http://127.0.0.1:8080');
$redirect_uris = conf('site_name', 'http://127.0.0.1:8080');
$scopes = 'read write';
# create the Authorization App
$ch = curl_init($instance.'/api/v1/apps');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'client_name' => $app_name,
'redirect_uris' => $redirect_uris,
'website' => $site_name,
'scopes' => $scopes,
]));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
# result must be JSON
$result = @json_decode($result);
if ($result === null) {
http_response_code(500);
die(json_encode([
'status' => 'error',
'message' => lr('error.instance_failed_or_not_mastodon',
'Instance failed to create an authorization App. Is it an instance?')
]));
}
# create the URL for OAUTH
$query_string = http_build_query([
'client_id' => $result->client_id ?? null,
'redirect_uris' => $redirect_uris,
'response_type' => 'code',
'scope' => $scopes
]);
echo json_encode([
'status' => 'ok',
'message' => $instance.'/oauth/autorize?'.$query_string
]);