Spaces:
Running
Running
# Hugging Face Token Validation Fix | |
## Problem Description | |
The original launch script was using the `hf` CLI command to validate Hugging Face tokens, which was causing authentication failures even with valid tokens. This was due to: | |
1. CLI installation issues | |
2. Inconsistent token format handling | |
3. Poor error reporting | |
## Solution Implementation | |
### New Python-Based Validation System | |
We've implemented a robust Python-based token validation system using the official `huggingface_hub` API: | |
#### Key Components | |
1. **`scripts/validate_hf_token.py`** - Main validation script | |
2. **Updated `launch.sh`** - Modified to use Python validation | |
3. **`tests/test_token_validation.py`** - Test suite for validation | |
4. **`scripts/check_dependencies.py`** - Dependency verification | |
### Features | |
- β **Robust Error Handling**: Detailed error messages for different failure types | |
- β **JSON Output**: Structured responses for easy parsing | |
- β **Multiple Input Methods**: Command line arguments or environment variables | |
- β **Username Extraction**: Automatically retrieves username from valid tokens | |
- β **Dependency Checking**: Verifies required packages are installed | |
## Usage | |
### Direct Script Usage | |
```bash | |
# Using command line argument | |
python scripts/validate_hf_token.py hf_your_token_here | |
# Using environment variable | |
export HF_TOKEN=hf_your_token_here | |
python scripts/validate_hf_token.py | |
``` | |
### Expected Output | |
**Success:** | |
```json | |
{"success": true, "username": "YourUsername", "error": null} | |
``` | |
**Failure:** | |
```json | |
{"success": false, "username": null, "error": "Invalid token - unauthorized access"} | |
``` | |
### Integration with Launch Script | |
The `launch.sh` script now automatically: | |
1. Prompts for your HF token | |
2. Validates it using the Python script | |
3. Extracts your username automatically | |
4. Provides detailed error messages if validation fails | |
## Error Types and Solutions | |
### Common Error Messages | |
| Error Message | Cause | Solution | | |
|---------------|-------|----------| | |
| "Invalid token - unauthorized access" | Token is invalid or expired | Generate new token at https://huggingface.co/settings/tokens | | |
| "Token lacks required permissions" | Token doesn't have write access | Ensure token has write permissions | | |
| "Network error" | Connection issues | Check internet connection | | |
| "Failed to run token validation script" | Missing dependencies | Run `pip install huggingface_hub` | | |
### Dependency Installation | |
```bash | |
# Install required dependencies | |
pip install huggingface_hub | |
# Check all dependencies | |
python scripts/check_dependencies.py | |
# Install all requirements | |
pip install -r requirements/requirements.txt | |
``` | |
## Testing | |
### Run the Test Suite | |
```bash | |
python tests/test_token_validation.py | |
``` | |
### Manual Testing | |
```bash | |
# Test with your token | |
python scripts/validate_hf_token.py hf_your_token_here | |
# Test dependency check | |
python scripts/check_dependencies.py | |
``` | |
## Troubleshooting | |
### If Token Validation Still Fails | |
1. **Check Token Format**: Ensure token starts with `hf_` | |
2. **Verify Token Permissions**: Token needs read/write access | |
3. **Check Network**: Ensure internet connection is stable | |
4. **Update Dependencies**: Run `pip install --upgrade huggingface_hub` | |
### If Launch Script Fails | |
1. **Check Python Path**: Ensure `python3` is available | |
2. **Verify Script Permissions**: Script should be executable | |
3. **Check JSON Parsing**: Ensure Python can parse JSON output | |
4. **Review Error Messages**: Check the specific error in launch.sh output | |
## Technical Details | |
### Token Validation Process | |
1. **Environment Setup**: Sets `HUGGING_FACE_HUB_TOKEN` environment variable | |
2. **API Client Creation**: Initializes `HfApi()` client | |
3. **User Info Retrieval**: Calls `api.whoami()` to validate token | |
4. **Username Extraction**: Extracts username from user info | |
5. **Error Handling**: Catches and categorizes different error types | |
### JSON Parsing in Shell | |
The launch script uses Python's JSON parser to safely extract values: | |
```bash | |
local success=$(echo "$result" | python3 -c " | |
import sys, json | |
try: | |
data = json.load(sys.stdin) | |
print(data.get('success', False)) | |
except: | |
print('False') | |
") | |
``` | |
## Migration from Old System | |
### Before (CLI-based) | |
```bash | |
if hf whoami >/dev/null 2>&1; then | |
HF_USERNAME=$(hf whoami | head -n1 | tr -d '\n') | |
``` | |
### After (Python-based) | |
```bash | |
if result=$(python3 scripts/validate_hf_token.py "$token" 2>/dev/null); then | |
# Parse JSON result with error handling | |
local success=$(echo "$result" | python3 -c "...") | |
local username=$(echo "$result" | python3 -c "...") | |
``` | |
## Benefits | |
1. **Reliability**: Uses official Python API instead of CLI | |
2. **Error Reporting**: Detailed error messages for debugging | |
3. **Cross-Platform**: Works on Windows, Linux, and macOS | |
4. **Maintainability**: Easy to update and extend | |
5. **Testing**: Comprehensive test suite included | |
## Future Enhancements | |
- [ ] Add token expiration checking | |
- [ ] Implement token refresh functionality | |
- [ ] Add support for organization tokens | |
- [ ] Create GUI for token management | |
- [ ] Add token security validation | |
--- | |
**Note**: This fix ensures that valid Hugging Face tokens are properly recognized and that users get clear feedback when there are authentication issues. |