#!/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()