191 lines
6.3 KiB
Python
191 lines
6.3 KiB
Python
#!/usr/bin/env python
|
||
"""
|
||
Manual Social Auth Test Script
|
||
|
||
Bu script ile social authentication'ı test edebilirsiniz.
|
||
Gerçek bir access token ile test yapar.
|
||
"""
|
||
import requests
|
||
import json
|
||
|
||
BASE_URL = "http://localhost:8000/api/v1"
|
||
|
||
def print_header(title):
|
||
print(f"\n{'='*60}")
|
||
print(f" {title}")
|
||
print(f"{'='*60}\n")
|
||
|
||
def print_response(response):
|
||
print(f"Status Code: {response.status_code}")
|
||
try:
|
||
data = response.json()
|
||
print(f"Response:\n{json.dumps(data, indent=2)}")
|
||
except:
|
||
print(f"Response: {response.text}")
|
||
|
||
def test_google_oauth():
|
||
"""
|
||
Google OAuth Test
|
||
|
||
Gerçek test için:
|
||
1. Google OAuth Playground'a git: https://developers.google.com/oauthplayground/
|
||
2. Scopes seç:
|
||
- https://www.googleapis.com/auth/userinfo.email
|
||
- https://www.googleapis.com/auth/userinfo.profile
|
||
3. "Authorize APIs" tıkla
|
||
4. Access token'ı kopyala
|
||
5. Aşağıdaki token yerine yapıştır
|
||
"""
|
||
print_header("🔵 Google OAuth Test")
|
||
|
||
# ⚠️ Buraya gerçek Google access token yapıştırın
|
||
access_token = input("Google Access Token girin (veya Enter ile atla): ").strip()
|
||
|
||
if not access_token:
|
||
print("❌ Access token girilmedi. Atlaniyor...")
|
||
print("\n📝 Google token almak için:")
|
||
print(" 1. https://developers.google.com/oauthplayground/")
|
||
print(" 2. Settings (sağ üst) → Use your own OAuth credentials")
|
||
print(" 3. Client ID: 915364976256-691m0s87as2r5vdbqr96f6humblseobt.apps.googleusercontent.com")
|
||
print(" 4. Client Secret: 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")
|
||
print(" 5. Scopes: userinfo.email, userinfo.profile")
|
||
print(" 6. Authorize APIs → Exchange authorization code for tokens")
|
||
return
|
||
|
||
try:
|
||
response = requests.post(
|
||
f"{BASE_URL}/auth/social/google-oauth2/",
|
||
json={"access_token": access_token},
|
||
headers={"Content-Type": "application/json"}
|
||
)
|
||
|
||
print_response(response)
|
||
|
||
if response.status_code == 200:
|
||
print("\n✅ Google OAuth Başarılı!")
|
||
data = response.json()
|
||
if 'user' in data:
|
||
print(f"\n👤 User: {data['user']['email']}")
|
||
print(f"🔑 Access Token alındı: {data['access'][:50]}...")
|
||
else:
|
||
print("\n❌ Google OAuth Başarısız!")
|
||
|
||
except requests.exceptions.ConnectionError:
|
||
print("❌ Server'a bağlanılamadı. Server çalışıyor mu?")
|
||
print(" python manage.py runserver")
|
||
except Exception as e:
|
||
print(f"❌ Hata: {e}")
|
||
|
||
def test_github_oauth():
|
||
"""
|
||
GitHub OAuth Test
|
||
|
||
Gerçek test için:
|
||
1. GitHub'da Personal Access Token oluştur
|
||
2. Scopes: user, user:email
|
||
3. Token'ı aşağıya yapıştır
|
||
"""
|
||
print_header("⚫ GitHub OAuth Test")
|
||
|
||
# ⚠️ Buraya gerçek GitHub access token yapıştırın
|
||
access_token = input("GitHub Access Token girin (veya Enter ile atla): ").strip()
|
||
|
||
if not access_token:
|
||
print("❌ Access token girilmedi. Atlanıyor...")
|
||
print("\n📝 GitHub token almak için:")
|
||
print(" 1. https://github.com/settings/tokens")
|
||
print(" 2. Generate new token (classic)")
|
||
print(" 3. Scopes: user, user:email")
|
||
print(" 4. Token'ı kopyala")
|
||
return
|
||
|
||
try:
|
||
response = requests.post(
|
||
f"{BASE_URL}/auth/social/github/",
|
||
json={"access_token": access_token},
|
||
headers={"Content-Type": "application/json"}
|
||
)
|
||
|
||
print_response(response)
|
||
|
||
if response.status_code == 200:
|
||
print("\n✅ GitHub OAuth Başarılı!")
|
||
data = response.json()
|
||
if 'user' in data:
|
||
print(f"\n👤 User: {data['user']['email']}")
|
||
print(f"🔑 Access Token alındı: {data['access'][:50]}...")
|
||
else:
|
||
print("\n❌ GitHub OAuth Başarısız!")
|
||
|
||
except requests.exceptions.ConnectionError:
|
||
print("❌ Server'a bağlanılamadı. Server çalışıyor mu?")
|
||
print(" python manage.py runserver")
|
||
except Exception as e:
|
||
print(f"❌ Hata: {e}")
|
||
|
||
def test_endpoints_available():
|
||
"""Check if social auth endpoints are available"""
|
||
print_header("🔍 Endpoint Kontrolü")
|
||
|
||
try:
|
||
# Test if server is running
|
||
response = requests.get(f"{BASE_URL}/auth/users/")
|
||
print("✅ Server çalışıyor")
|
||
|
||
# Social auth endpoints don't support GET, so we expect 405
|
||
print("✅ Social auth endpoints hazır")
|
||
|
||
except requests.exceptions.ConnectionError:
|
||
print("❌ Server çalışmıyor!")
|
||
print(" Çalıştırmak için: python manage.py runserver")
|
||
return False
|
||
except Exception as e:
|
||
print(f"⚠️ Beklenmeyen hata: {e}")
|
||
return False
|
||
|
||
return True
|
||
|
||
def main():
|
||
print("\n" + "="*60)
|
||
print(" 🔐 Django Social Auth Test Script")
|
||
print("="*60)
|
||
print("\n📝 Bu script ile Google ve GitHub OAuth'u test edebilirsiniz.")
|
||
print(" Real access token'larla çalışır.\n")
|
||
|
||
# Check if server is running
|
||
if not test_endpoints_available():
|
||
return
|
||
|
||
while True:
|
||
print("\n" + "-"*60)
|
||
print("Seçenekler:")
|
||
print(" 1. Google OAuth Test")
|
||
print(" 2. GitHub OAuth Test")
|
||
print(" 3. HTML Test Sayfasını Aç")
|
||
print(" 4. Çıkış")
|
||
print("-"*60)
|
||
|
||
choice = input("\nSeçiminiz (1-4): ").strip()
|
||
|
||
if choice == "1":
|
||
test_google_oauth()
|
||
elif choice == "2":
|
||
test_github_oauth()
|
||
elif choice == "3":
|
||
print("\n📄 HTML test sayfası:")
|
||
print(" file:///home/beyhan/Python/server/templates/test_social_auth.html")
|
||
print("\n veya tarayıcınızda açın:")
|
||
print(" Dosya → Aç → /home/beyhan/Python/server/templates/test_social_auth.html")
|
||
elif choice == "4":
|
||
print("\n👋 Çıkılıyor...")
|
||
break
|
||
else:
|
||
print("❌ Geçersiz seçim!")
|
||
|
||
if __name__ == "__main__":
|
||
try:
|
||
main()
|
||
except KeyboardInterrupt:
|
||
print("\n\n👋 Test sonlandırıldı.")
|
||
|