Format all code.
This commit is contained in:
@@ -8,7 +8,8 @@ import random
|
||||
import socket
|
||||
|
||||
# --- IMPORTANT: Ensure this matches the "redirect uri" in your Reddit App settings ---
|
||||
REDIRECT_URI = "http://localhost:5000"
|
||||
REDIRECT_URI = "http://localhost:5000"
|
||||
|
||||
|
||||
def main():
|
||||
print("--- RSTAT Refresh Token Generator ---")
|
||||
@@ -17,7 +18,9 @@ def main():
|
||||
client_secret = os.getenv("REDDIT_CLIENT_SECRET")
|
||||
|
||||
if not all([client_id, client_secret]):
|
||||
print("Error: REDDIT_CLIENT_ID and REDDIT_CLIENT_SECRET must be set in your .env file.")
|
||||
print(
|
||||
"Error: REDDIT_CLIENT_ID and REDDIT_CLIENT_SECRET must be set in your .env file."
|
||||
)
|
||||
return
|
||||
|
||||
# 1. Initialize PRAW
|
||||
@@ -25,44 +28,55 @@ def main():
|
||||
client_id=client_id,
|
||||
client_secret=client_secret,
|
||||
redirect_uri=REDIRECT_URI,
|
||||
user_agent="rstat_token_fetcher (by u/YourUsername)" # Can be anything
|
||||
user_agent="rstat_token_fetcher (by u/YourUsername)", # Can be anything
|
||||
)
|
||||
|
||||
# 2. Generate the authorization URL
|
||||
# Scopes define what our script is allowed to do. 'identity' and 'submit' are needed.
|
||||
scopes = ["identity", "submit", "read"]
|
||||
scopes = ["identity", "submit", "read"]
|
||||
state = str(random.randint(0, 65536))
|
||||
auth_url = reddit.auth.url(scopes, state, "permanent")
|
||||
|
||||
print("\nStep 1: Open this URL in your browser:\n")
|
||||
print(auth_url)
|
||||
|
||||
print("\nStep 2: Log in to Reddit, click 'Allow', and you'll be redirected to a 'page not found'.")
|
||||
print("Step 3: Copy the ENTIRE URL from your browser's address bar after the redirect.")
|
||||
|
||||
|
||||
print(
|
||||
"\nStep 2: Log in to Reddit, click 'Allow', and you'll be redirected to a 'page not found'."
|
||||
)
|
||||
print(
|
||||
"Step 3: Copy the ENTIRE URL from your browser's address bar after the redirect."
|
||||
)
|
||||
|
||||
# 3. Get the redirected URL from the user
|
||||
redirected_url = input("\nStep 4: Paste the full redirected URL here and press Enter:\n> ")
|
||||
redirected_url = input(
|
||||
"\nStep 4: Paste the full redirected URL here and press Enter:\n> "
|
||||
)
|
||||
|
||||
# 4. Exchange the authorization code for a refresh token
|
||||
try:
|
||||
# The state is used to prevent CSRF attacks, we're just checking it matches
|
||||
assert state == redirected_url.split("state=")[1].split("&")[0]
|
||||
code = redirected_url.split("code=")[1].split("#_")[0]
|
||||
|
||||
|
||||
print("\nAuthorization code received. Fetching refresh token...")
|
||||
|
||||
|
||||
# This is the line that gets the key!
|
||||
refresh_token = reddit.auth.authorize(code)
|
||||
|
||||
|
||||
print("\n--- SUCCESS! ---")
|
||||
print("Your Refresh Token is:\n")
|
||||
print(refresh_token)
|
||||
print("\nStep 5: Copy this token and add it to your .env file as REDDIT_REFRESH_TOKEN.")
|
||||
print("Step 6: You can now delete your REDDIT_USERNAME and REDDIT_PASSWORD from the .env file.")
|
||||
print(
|
||||
"\nStep 5: Copy this token and add it to your .env file as REDDIT_REFRESH_TOKEN."
|
||||
)
|
||||
print(
|
||||
"Step 6: You can now delete your REDDIT_USERNAME and REDDIT_PASSWORD from the .env file."
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
print(f"\nAn error occurred: {e}")
|
||||
print("Please make sure you copied the full URL.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
main()
|
||||
|
Reference in New Issue
Block a user