mirror of
https://github.com/cheeaun/phanpy.git
synced 2025-01-04 16:47:19 +03:00
62 lines
1.7 KiB
JavaScript
62 lines
1.7 KiB
JavaScript
const { VITE_CLIENT_NAME: CLIENT_NAME, VITE_WEBSITE: WEBSITE } = import.meta
|
|
.env;
|
|
|
|
export async function registerApplication({ instanceURL }) {
|
|
const registrationParams = new URLSearchParams({
|
|
client_name: CLIENT_NAME,
|
|
redirect_uris: location.origin,
|
|
scopes: 'read write follow',
|
|
website: WEBSITE,
|
|
});
|
|
const registrationResponse = await fetch(
|
|
`https://${instanceURL}/api/v1/apps`,
|
|
{
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|
},
|
|
body: registrationParams.toString(),
|
|
},
|
|
);
|
|
const registrationJSON = await registrationResponse.json();
|
|
console.log({ registrationJSON });
|
|
return registrationJSON;
|
|
}
|
|
|
|
export async function getAuthorizationURL({ instanceURL, client_id }) {
|
|
const authorizationParams = new URLSearchParams({
|
|
client_id,
|
|
scope: 'read write follow',
|
|
redirect_uri: location.origin,
|
|
// redirect_uri: 'urn:ietf:wg:oauth:2.0:oob',
|
|
response_type: 'code',
|
|
});
|
|
const authorizationURL = `https://${instanceURL}/oauth/authorize?${authorizationParams.toString()}`;
|
|
return authorizationURL;
|
|
}
|
|
|
|
export async function getAccessToken({
|
|
instanceURL,
|
|
client_id,
|
|
client_secret,
|
|
code,
|
|
}) {
|
|
const params = new URLSearchParams({
|
|
client_id,
|
|
client_secret,
|
|
redirect_uri: location.origin,
|
|
grant_type: 'authorization_code',
|
|
code,
|
|
scope: 'read write follow',
|
|
});
|
|
const tokenResponse = await fetch(`https://${instanceURL}/oauth/token`, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|
},
|
|
body: params.toString(),
|
|
});
|
|
const tokenJSON = await tokenResponse.json();
|
|
console.log({ tokenJSON });
|
|
return tokenJSON;
|
|
}
|