refresh tokens and log token activity
This commit is contained in:
+33
-3
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
from datetime import datetime,timezone
|
from datetime import datetime,timezone
|
||||||
from urllib.parse import quote_plus
|
from urllib.parse import quote_plus
|
||||||
from urllib.request import urlretrieve
|
from urllib.request import urlretrieve, urlopen, Request
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
from os import makedirs,path
|
from os import makedirs,path
|
||||||
import json,sys,webbrowser,importlib
|
import json,sys,webbrowser,importlib
|
||||||
@@ -151,6 +151,7 @@ def save_tokens(access_token,refresh_token):
|
|||||||
},
|
},
|
||||||
file
|
file
|
||||||
)
|
)
|
||||||
|
print('login tokens saved to '+script_path()+'tokens.json')
|
||||||
|
|
||||||
def load_tokens():
|
def load_tokens():
|
||||||
try:
|
try:
|
||||||
@@ -159,13 +160,36 @@ def load_tokens():
|
|||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
def refresh_tokens(refresh_token):
|
||||||
|
print('refreshing login tokens')
|
||||||
|
global client
|
||||||
|
refresh_request=Request(
|
||||||
|
'https://id.twitch.tv/oauth2/token',
|
||||||
|
(
|
||||||
|
'client_id='+client.client_id
|
||||||
|
+'&grant_type=refresh_token'
|
||||||
|
+'&refresh_token='+refresh_token
|
||||||
|
).encode(),
|
||||||
|
{'Content-Type':'application/x-www-form-urlencoded'}
|
||||||
|
)
|
||||||
|
refresh_response=urlopen(refresh_request)
|
||||||
|
refresh_response=json.loads(refresh_response.read())
|
||||||
|
save_tokens(refresh_response['access_token'],refresh_response['refresh_token'])
|
||||||
|
return{
|
||||||
|
'access_token':refresh_response['access_token'],
|
||||||
|
'refresh_token':refresh_response['refresh_token'],
|
||||||
|
}
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
from twitch import Client
|
from twitch import Client
|
||||||
from twitch.types import eventsub
|
from twitch.types import eventsub
|
||||||
from twitch.ext.oauth import DeviceAuthFlow, Scopes
|
from twitch.ext.oauth import DeviceAuthFlow, Scopes
|
||||||
|
import asyncio
|
||||||
global client
|
global client
|
||||||
client = Client(client_id='h08yimv2stqxci85tpfh5k7t16an2u')
|
client = Client(client_id='h08yimv2stqxci85tpfh5k7t16an2u')
|
||||||
tokens=load_tokens().values()
|
tokens=load_tokens()
|
||||||
|
if len(tokens)!=0:
|
||||||
|
tokens=refresh_tokens(tokens['refresh_token'])
|
||||||
DeviceAuthFlow(
|
DeviceAuthFlow(
|
||||||
client=client,
|
client=client,
|
||||||
scopes=[
|
scopes=[
|
||||||
@@ -191,6 +215,11 @@ def main():
|
|||||||
@client.event
|
@client.event
|
||||||
async def on_ready() -> None:
|
async def on_ready() -> None:
|
||||||
print('astrolobot ready')
|
print('astrolobot ready')
|
||||||
|
while True:
|
||||||
|
tokens=client.http.get_token(client.user.id)
|
||||||
|
await asyncio.sleep(tokens['expire_in']*0.9)
|
||||||
|
tokens=refresh_tokens(tokens['refresh_token'])
|
||||||
|
await client.authorize(tokens['access_token'],tokens['refresh_token'])
|
||||||
|
|
||||||
@client.event
|
@client.event
|
||||||
async def on_chat_message(data: eventsub.chat.MessageEvent):
|
async def on_chat_message(data: eventsub.chat.MessageEvent):
|
||||||
@@ -202,7 +231,7 @@ def main():
|
|||||||
for line in get_transits_formatted().splitlines(False):
|
for line in get_transits_formatted().splitlines(False):
|
||||||
await client.channel.chat.send_message(line,data['message_id'])
|
await client.channel.chat.send_message(line,data['message_id'])
|
||||||
|
|
||||||
client.run(*tokens)
|
client.run(*tokens.values())
|
||||||
|
|
||||||
# OBS functions
|
# OBS functions
|
||||||
|
|
||||||
@@ -229,6 +258,7 @@ def obs_save_tokens(access_token,refresh_token):
|
|||||||
import obspython
|
import obspython
|
||||||
obspython.obs_data_set_string(obs_settings,'access_token',access_token)
|
obspython.obs_data_set_string(obs_settings,'access_token',access_token)
|
||||||
obspython.obs_data_set_string(obs_settings,'refresh_token',refresh_token)
|
obspython.obs_data_set_string(obs_settings,'refresh_token',refresh_token)
|
||||||
|
print('login tokens saved to OBS')
|
||||||
|
|
||||||
# https://docs.obsproject.com/scripting#script-function-exports
|
# https://docs.obsproject.com/scripting#script-function-exports
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user