80 lines
2.8 KiB
Python
80 lines
2.8 KiB
Python
#!/usr/bin/env python3
|
|
"""Debug Facebook tokens - check what me/accounts returns."""
|
|
import os, sys, requests, json
|
|
|
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
os.chdir(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
|
from dotenv import load_dotenv
|
|
load_dotenv('.env')
|
|
|
|
from database import *
|
|
db = SessionLocal()
|
|
token = db.query(OAuthToken).filter(OAuthToken.company_id==11, OAuthToken.provider=="meta").first()
|
|
if not token:
|
|
print("No token found")
|
|
sys.exit(1)
|
|
|
|
user_token = (token.metadata_json or {}).get("user_access_token", "")
|
|
current_token = token.access_token
|
|
|
|
print("=== CURRENT STATE ===")
|
|
print(f"access_token prefix: {current_token[:40]}")
|
|
print(f"user_token prefix: {user_token[:40]}")
|
|
print(f"Same token: {current_token == user_token}")
|
|
print()
|
|
|
|
app_id = os.environ["META_APP_ID"]
|
|
app_secret = os.environ["META_APP_SECRET"]
|
|
app_token = f"{app_id}|{app_secret}"
|
|
|
|
print("=== me/accounts with USER TOKEN ===")
|
|
r = requests.get("https://graph.facebook.com/v21.0/me/accounts", params={
|
|
"fields": "id,name,category,access_token,fan_count",
|
|
"access_token": user_token
|
|
})
|
|
data = r.json()
|
|
print(f"Status: {r.status_code}")
|
|
if "data" in data:
|
|
for page in data["data"]:
|
|
pt = page.get("access_token", "")
|
|
print(f"\nPage: {page.get('name')} | ID: {page.get('id')} | fans: {page.get('fan_count')}")
|
|
print(f" Page token prefix: {pt[:40] if pt else 'NONE'}")
|
|
print(f" Same as current access_token: {pt == current_token}")
|
|
print(f" Same as user_token: {pt == user_token}")
|
|
# Debug
|
|
dr = requests.get("https://graph.facebook.com/debug_token", params={
|
|
"input_token": pt, "access_token": app_token
|
|
})
|
|
dd = dr.json().get("data", {})
|
|
print(f" Debug type: {dd.get('type')}")
|
|
print(f" Debug scopes: {dd.get('scopes')}")
|
|
print(f" Debug profile_id: {dd.get('profile_id')}")
|
|
elif "error" in data:
|
|
print(f"Error: {data['error'].get('message')}")
|
|
else:
|
|
print(f"Unexpected: {json.dumps(data)[:500]}")
|
|
|
|
print()
|
|
print("=== me/accounts with CURRENT (access_token) ===")
|
|
r2 = requests.get("https://graph.facebook.com/v21.0/me/accounts", params={
|
|
"fields": "id,name,category,access_token,fan_count",
|
|
"access_token": current_token
|
|
})
|
|
data2 = r2.json()
|
|
print(f"Status: {r2.status_code}")
|
|
if "data" in data2:
|
|
for page in data2["data"]:
|
|
pt = page.get("access_token", "")
|
|
print(f"\nPage: {page.get('name')} | ID: {page.get('id')}")
|
|
print(f" Page token prefix: {pt[:40] if pt else 'NONE'}")
|
|
dr = requests.get("https://graph.facebook.com/debug_token", params={
|
|
"input_token": pt, "access_token": app_token
|
|
})
|
|
dd = dr.json().get("data", {})
|
|
print(f" Debug type: {dd.get('type')}")
|
|
elif "error" in data2:
|
|
print(f"Error: {data2['error'].get('message')}")
|
|
|
|
db.close()
|