android-playstore-api-validation
SKILL.md
Android Play Store API Validation
Creates a validation script to test Play Store API connection and permissions.
Prerequisites
- Service account created (run
android-service-account-guidefirst) - Service account JSON file downloaded
- Python 3 installed
- Package name known
Inputs
| Input | Required | Default | Description |
|---|---|---|---|
| service_account_json_path | Yes | - | Path to JSON key file |
| package_name | Yes | - | App package name |
Process
Step 1: Create Validation Script
Create scripts/validate-playstore.py:
#!/usr/bin/env python3
"""
Validate Google Play Store API connection and permissions.
Usage:
python3 validate-playstore.py SERVICE_ACCOUNT.json com.example.app
"""
import sys
import json
from pathlib import Path
def validate_json_file(json_path):
"""Validate service account JSON file."""
print(f"π Validating service account JSON: {json_path}")
if not Path(json_path).exists():
print(f"β File not found: {json_path}")
return False
try:
with open(json_path, 'r') as f:
data = json.load(f)
required_fields = ['type', 'project_id', 'private_key', 'client_email']
missing = [f for f in required_fields if f not in data]
if missing:
print(f"β Missing required fields: {', '.join(missing)}")
return False
if data['type'] != 'service_account':
print(f"β Invalid type: {data['type']} (expected: service_account)")
return False
print(f"β
Service account JSON is valid")
print(f" Project: {data['project_id']}")
print(f" Email: {data['client_email']}")
return True
except json.JSONDecodeError as e:
print(f"β Invalid JSON format: {e}")
return False
def test_api_connection(json_path, package_name):
"""Test Play Developer API connection."""
print(f"\nπ Testing Play Developer API connection...")
print(f" Package: {package_name}")
try:
from google.oauth2 import service_account
from googleapiclient.discovery import build
# Load credentials
credentials = service_account.Credentials.from_service_account_file(
json_path,
scopes=['https://www.googleapis.com/auth/androidpublisher']
)
# Build service
service = build('androidpublisher', 'v3', credentials=credentials)
# Test API call - get app details
try:
edit_request = service.edits().insert(
body={},
packageName=package_name
)
edit = edit_request.execute()
edit_id = edit['id']
# Clean up edit
service.edits().delete(
editId=edit_id,
packageName=package_name
).execute()
print(f"β
Successfully connected to Play Developer API")
print(f"β
Can access package: {package_name}")
return True
except Exception as e:
error_msg = str(e)
if '404' in error_msg:
print(f"β Package not found: {package_name}")
print(f" Make sure app exists in Play Console")
elif '403' in error_msg or 'permission' in error_msg.lower():
print(f"β Permission denied")
print("Error: Service account needs 'Release apps to production tracks' permission.")
print("In Play Console: Setup > API access > Grant access > select your service account")
print("Required: 'Release to production, exclude devices, and use Play App Signing'")
else:
print(f"β API error: {error_msg}")
return False
except ImportError:
print(f"β Required libraries not installed")
print(f" Run: pip install google-auth google-api-python-client")
return False
except Exception as e:
print(f"β Unexpected error: {e}")
return False
def main():
"""Main validation function."""
if len(sys.argv) != 3:
print("Usage: python3 validate-playstore.py SERVICE_ACCOUNT.json PACKAGE_NAME")
print("")
print("Example:")
print(" python3 validate-playstore.py ~/service-account.json com.example.app")
sys.exit(1)
json_path = sys.argv[1]
package_name = sys.argv[2]
print("=" * 60)
print("Google Play Store API Validation")
print("=" * 60)
# Step 1: Validate JSON
if not validate_json_file(json_path):
sys.exit(1)
# Step 2: Test API connection
if not test_api_connection(json_path, package_name):
sys.exit(1)
print("\n" + "=" * 60)
print("β
All validations passed!")
print("=" * 60)
print("\nYour Play Store API setup is ready for deployment.")
print("\nNext steps:")
print(" 1. Add SERVICE_ACCOUNT_JSON_PLAINTEXT to GitHub Secrets")
print(" 2. Run: /devtools:android-playstore-publish")
print(" 3. Deploy your app!")
if __name__ == '__main__':
main()
Step 2: Make Script Executable
chmod +x scripts/validate-playstore.py
Step 3: Create Requirements File
Create scripts/requirements-playstore.txt:
google-auth==2.23.0
google-api-python-client==2.100.0
Step 4: Create Validation Documentation
Add to distribution/PLAY_CONSOLE_SETUP.md:
## Validation
After completing setup, validate your configuration:
```bash
# Install required packages
pip install -r scripts/requirements-playstore.txt
# Run validation
python3 scripts/validate-playstore.py \
~/path/to/service-account.json \
com.example.yourapp
Expected output:
β
Service account JSON is valid
β
Successfully connected to Play Developer API
β
Can access package: com.example.yourapp
β
All validations passed!
If validation fails, check:
- Service account has "Release" permission in Play Console
- Play Developer API is enabled
- Package name matches exactly
- Waited 5-10 minutes for permissions to propagate
Verification
MANDATORY: Run the validation script:
Step 1: Create virtual environment
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
Step 2: Install dependencies
pip install google-auth google-api-python-client
Step 3: Run validation
python3 scripts/validate-playstore.py \
/path/to/service-account.json \
com.example.app
Step 4: Deactivate when done
deactivate
Expected output:
β
Service account JSON is valid
β
Successfully connected to Play Developer API
β
Can access package: com.example.app
β
All validations passed!
Outputs
| Output | Location | Description |
|---|---|---|
| Validation script | scripts/validate-playstore.py | API connection tester |
| Requirements | scripts/requirements-playstore.txt | Python dependencies |
Troubleshooting
"Package not found"
Cause: App doesn't exist in Play Console or package name mismatch Fix: Create app in Play Console first, verify exact package name
"Permission denied"
Cause: Service account lacks permissions Fix: Grant "Release" permission in Play Console β API access
"Libraries not installed"
Cause: Missing Python packages
Fix: pip install google-auth google-api-python-client
"403 Forbidden"
Cause: Permissions not yet propagated Fix: Wait 5-10 minutes after granting permissions, then retry
Completion Criteria
-
scripts/validate-playstore.pyexists -
scripts/requirements-playstore.txtexists - Script is executable
- Validation script runs successfully
- API connection confirmed
Weekly Installs
4
Repository
hitoshura25/claβ¦devtoolsGitHub Stars
1
First Seen
Feb 28, 2026
Security Audits
Installed on
cline4
github-copilot4
codex4
kimi-cli4
gemini-cli4
cursor4