Panel terminé + Refresh token auto
This commit is contained in:
25
utils/checkChannel.js
Normal file
25
utils/checkChannel.js
Normal file
@@ -0,0 +1,25 @@
|
||||
require('dotenv').config()
|
||||
|
||||
const validateToken = require('./validateToken')
|
||||
const refreshToken = require('./refreshToken')
|
||||
const writeEnv = require('./writeEnv')
|
||||
|
||||
let client_id = process.env.TWITCH_APP_ID
|
||||
let client_secret = process.env.TWITCH_APP_SECRET
|
||||
|
||||
module.exports = async function (channel_access_token) {
|
||||
let channel_refresh_token = ''
|
||||
|
||||
// Check if channel_access_token is valid
|
||||
if (!await validateToken(channel_access_token)) {
|
||||
|
||||
// If not, refresh it
|
||||
[channel_access_token, channel_refresh_token] = await refreshToken(client_id, client_secret, channel_access_token)
|
||||
writeEnv('TWITCH_CHANNEL_ACCESS_TOKEN', channel_access_token)
|
||||
writeEnv('TWITCH_CHANNEL_REFRESH_TOKEN', channel_refresh_token)
|
||||
|
||||
let channel_name = await getUserInfo(client_id, channel_access_token).login
|
||||
writeEnv('TWITCH_CHANNEL_USERNAME', channel_name)
|
||||
}
|
||||
return [channel_access_token, channel_name]
|
||||
}
|
||||
25
utils/checkUser.js
Normal file
25
utils/checkUser.js
Normal file
@@ -0,0 +1,25 @@
|
||||
require('dotenv').config()
|
||||
|
||||
const validateToken = require('./validateToken')
|
||||
const refreshToken = require('./refreshToken')
|
||||
const writeEnv = require('./writeEnv')
|
||||
|
||||
let client_id = process.env.TWITCH_APP_ID
|
||||
let client_secret = process.env.TWITCH_APP_SECRET
|
||||
|
||||
module.exports = async function (user_access_token) {
|
||||
let user_refresh_token = ''
|
||||
|
||||
// Check if user_access_token is valid
|
||||
if (!await validateToken(user_access_token)) {
|
||||
|
||||
// If not, refresh it
|
||||
[user_access_token, user_refresh_token ] = await refreshToken(client_id, client_secret, user_access_token)
|
||||
writeEnv('TWITCH_USER_ACCESS_TOKEN', user_access_token)
|
||||
writeEnv('TWITCH_USER_REFRESH_TOKEN', user_refresh_token)
|
||||
|
||||
let user_name = await getUserInfo(client_id, user_access_token).login
|
||||
writeEnv('TWITCH_USER_USERNAME', user_name)
|
||||
}
|
||||
return [user_access_token, user_name]
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
const mysql = require('mysql2/promise')
|
||||
require('dotenv').config()
|
||||
|
||||
module.exports = async function () {
|
||||
// Create a connection to the MySQL database
|
||||
|
||||
@@ -7,6 +7,7 @@ module.exports = async function (client_id, access_token, broadcaster_id, reward
|
||||
'Client-Id': client_id
|
||||
}
|
||||
}).then(response => {
|
||||
//console.log(response.data)
|
||||
let reward = response.data.data.find(reward => reward.title === reward_name)
|
||||
return reward.id
|
||||
}).catch(error => { console.log(error.response.data) })
|
||||
|
||||
@@ -8,7 +8,7 @@ module.exports = async function (client_id, client_secret, code, redirect_uri) {
|
||||
redirect_uri,
|
||||
grant_type: 'authorization_code'
|
||||
}).then(response => {
|
||||
console.log(response.data)
|
||||
if (response.data.token_type === 'bearer') return response.data.access_token
|
||||
//console.log(response.data)
|
||||
if (response.data.token_type === 'bearer') return [response.data.access_token, response.data.refresh_token]
|
||||
}).catch(error => { console.log(error.response.data) })
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
const axios = require('axios')
|
||||
|
||||
module.exports = async function (client_id, access_token) {
|
||||
return await axios.get(`https://api.twitch.tv/helix/users`, {
|
||||
headers: {
|
||||
'Authorization': `Bearer ${access_token}`,
|
||||
'Client-Id': client_id
|
||||
}
|
||||
}).then(response => {
|
||||
//console.log(response.data)
|
||||
return response.data.data[0].id
|
||||
}).catch(error => { console.log(error.response.data) })
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
const axios = require('axios')
|
||||
|
||||
module.exports = async function (client_id, access_token) {
|
||||
return await axios.get(`https://api.twitch.tv/helix/users`, {
|
||||
headers: {
|
||||
'Authorization': `Bearer ${access_token}`,
|
||||
'Client-Id': client_id
|
||||
}
|
||||
}).then(response => {
|
||||
//console.log(response.data)
|
||||
return response.data.data[0].login
|
||||
}).catch(error => { console.log(error.response.data) })
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
module.exports = async function (client_id, redirect_uri, scope) {
|
||||
console.log(scope)
|
||||
let queries = {
|
||||
response_type: 'code',
|
||||
response_type: 'code',
|
||||
client_id,
|
||||
redirect_uri,
|
||||
scope: scope.join('+')
|
||||
|
||||
13
utils/refreshToken.js
Normal file
13
utils/refreshToken.js
Normal file
@@ -0,0 +1,13 @@
|
||||
const axios = require('axios')
|
||||
|
||||
module.exports = async function (client_id, client_secret, refresh_token) {
|
||||
return await axios.post('https://id.twitch.tv/oauth2/token', {
|
||||
client_id,
|
||||
client_secret,
|
||||
refresh_token,
|
||||
grant_type: 'refresh_token'
|
||||
}).then(response => {
|
||||
//console.log(response.data)
|
||||
if (response.data.token_type === 'bearer') return [response.data.access_token, response.data.refresh_token]
|
||||
}).catch(error => { console.log(error.response.data) })
|
||||
}
|
||||
@@ -16,6 +16,7 @@ module.exports = async function (client_id, access_token, session_id, type, vers
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
}).then(response => {
|
||||
//console.log(response.data)
|
||||
return response.data.data[0].status
|
||||
}).catch(error => { return error.response.data })
|
||||
}
|
||||
13
utils/validateToken.js
Normal file
13
utils/validateToken.js
Normal file
@@ -0,0 +1,13 @@
|
||||
const axios = require('axios')
|
||||
|
||||
module.exports = async function (access_token) {
|
||||
return await axios.get('https://id.twitch.tv/oauth2/validate', {
|
||||
headers: {
|
||||
'Authorization': `OAuth ${access_token}`,
|
||||
}
|
||||
}).then(response => {
|
||||
//console.log(response.data)
|
||||
if (response.data.status === '401') return false
|
||||
else return true
|
||||
}).catch(error => { console.log(error.response.data) })
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
const fs = require('fs')
|
||||
|
||||
module.exports = function (variable, value) {
|
||||
let parsedFile = fs.readFileSync('./.env', 'utf8')
|
||||
parsedFile = parsedFile.replace(new RegExp(`${variable}=.*`, 'g'), `${variable}=${value}`)
|
||||
fs.writeFileSync('./.env', parsedFile)
|
||||
let parsedFile = fs.readFileSync('./.env', 'utf8')
|
||||
parsedFile = parsedFile.replace(new RegExp(`${variable}=.*`, 'g'), `${variable}=${value}`)
|
||||
fs.writeFileSync('./.env', parsedFile)
|
||||
}
|
||||
Reference in New Issue
Block a user