{"id":34854438,"url":"https://github.com/fcsapi/token-generator","last_synced_at":"2026-01-13T20:53:05.843Z","repository":{"id":330631963,"uuid":"1122867135","full_name":"fcsapi/token-generator","owner":"fcsapi","description":"Secure token generator for FCS API in 10 programming languages - Generate HMAC-SHA256 tokens for frontend JavaScript authentication without exposing API keys.","archived":false,"fork":false,"pushed_at":"2025-12-26T11:20:35.000Z","size":17,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-12-28T11:14:24.916Z","etag":null,"topics":["fcsapi","stock-api"],"latest_commit_sha":null,"homepage":"https://fcsapi.com/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fcsapi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-25T17:34:53.000Z","updated_at":"2025-12-26T11:20:38.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/fcsapi/token-generator","commit_stats":null,"previous_names":["fcsapi/token-generator"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/fcsapi/token-generator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fcsapi%2Ftoken-generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fcsapi%2Ftoken-generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fcsapi%2Ftoken-generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fcsapi%2Ftoken-generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fcsapi","download_url":"https://codeload.github.com/fcsapi/token-generator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fcsapi%2Ftoken-generator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28400240,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T14:36:09.778Z","status":"ssl_error","status_checked_at":"2026-01-13T14:35:19.697Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fcsapi","stock-api"],"created_at":"2025-12-25T19:58:46.928Z","updated_at":"2026-01-13T20:53:05.838Z","avatar_url":"https://github.com/fcsapi.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FCS API - Token Generator\n\nGenerate secure tokens for frontend JavaScript authentication in **10 programming languages**.\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## Available Languages\n\n| Language | File |\n|----------|------|\n| PHP | `token-generator.php` |\n| Python | `token-generator.py` |\n| JavaScript | `token-generator.js` |\n| Java | `TokenGenerator.java` |\n| Ruby | `token_generator.rb` |\n| C# | `TokenGenerator.cs` |\n| Go | `token_generator.go` |\n| Rust | `token_generator.rs` |\n| Swift | `TokenGenerator.swift` |\n| Kotlin | `TokenGenerator.kt` |\n\n## Installation\n\n### Clone Full Repository\n```bash\ngit clone https://github.com/fcsapi/token-generator\n```\n\n### Download Single File\n```bash\n# PHP only\ncurl -O https://raw.githubusercontent.com/fcsapi/token-generator/main/token-generator.php\n\n# Python only\ncurl -O https://raw.githubusercontent.com/fcsapi/token-generator/main/token-generator.py\n\n# JavaScript only\ncurl -O https://raw.githubusercontent.com/fcsapi/token-generator/main/token-generator.js\n\n# Java only\ncurl -O https://raw.githubusercontent.com/fcsapi/token-generator/main/TokenGenerator.java\n\n# Ruby only\ncurl -O https://raw.githubusercontent.com/fcsapi/token-generator/main/token_generator.rb\n\n# C# only\ncurl -O https://raw.githubusercontent.com/fcsapi/token-generator/main/TokenGenerator.cs\n\n# Go only\ncurl -O https://raw.githubusercontent.com/fcsapi/token-generator/main/token_generator.go\n\n# Rust only\ncurl -O https://raw.githubusercontent.com/fcsapi/token-generator/main/token_generator.rs\n\n# Swift only\ncurl -O https://raw.githubusercontent.com/fcsapi/token-generator/main/TokenGenerator.swift\n\n# Kotlin only\ncurl -O https://raw.githubusercontent.com/fcsapi/token-generator/main/TokenGenerator.kt\n```\n\n### Or Download from GitHub\nGo to [GitHub](https://github.com/fcsapi/token-generator), click on the file you need, then click \"Download raw file\".\n\n## Usage\n\n### PHP\n```php\n$generator = new FcsTokenGenerator('your_access_key', 'your_public_key');\n$tokenData = $generator-\u003egenerateToken();\n// Returns: ['_token' =\u003e '...', '_expiry' =\u003e 1234567890, '_public_key' =\u003e '...']\n```\n\n### Python\n```python\ngenerator = FcsTokenGenerator('your_access_key', 'your_public_key')\ntoken_data = generator.generate_token()\n# Returns: {'_token': '...', '_expiry': 1234567890, '_public_key': '...'}\n```\n\n### JavaScript (Node.js)\n```javascript\nconst generator = new FcsTokenGenerator('your_access_key', 'your_public_key');\nconst tokenData = generator.generateToken();\n// Returns: { _token: '...', _expiry: 1234567890, _public_key: '...' }\n```\n\n### Java\n```java\nTokenGenerator generator = new TokenGenerator(\"your_access_key\", \"your_public_key\");\nMap\u003cString, Object\u003e tokenData = generator.generateToken();\n```\n\n### Ruby\n```ruby\ngenerator = FcsTokenGenerator.new('your_access_key', 'your_public_key')\ntoken_data = generator.generate_token\n```\n\n### C#\n```csharp\nvar generator = new TokenGenerator(\"your_access_key\", \"your_public_key\");\nvar tokenData = generator.GenerateToken();\n```\n\n### Go\n```go\ngenerator := NewTokenGenerator(\"your_access_key\", \"your_public_key\", 3600)\ntokenData := generator.GenerateToken()\n```\n\n### Rust\n```rust\nlet generator = TokenGenerator::new(\"your_access_key\", \"your_public_key\", None);\nlet token_data = generator.generate_token();\n```\n\n### Swift\n```swift\nlet generator = FcsTokenGenerator(accessKey: \"your_access_key\", publicKey: \"your_public_key\")\nlet tokenData = generator.generateToken()\n```\n\n### Kotlin\n```kotlin\nval generator = FcsTokenGenerator(\"your_access_key\", \"your_public_key\")\nval tokenData = generator.generateToken()\n```\n\n## Token Expiry Options\n\n| Seconds | Duration |\n|---------|----------|\n| 300 | 5 minutes |\n| 900 | 15 minutes |\n| 1800 | 30 minutes |\n| 3600 | 1 hour (default) |\n| 86400 | 24 hours |\n\n## How It Works\n\n1. **Backend** generates a secure token using HMAC-SHA256\n2. **Backend** sends token data to frontend (via API or meta tags)\n3. **Frontend** uses token for FCS API calls (no API key exposed)\n\n```\n┌─────────────────┐         ┌─────────────────┐         ┌─────────────────┐\n│     Backend     │         │    Frontend     │         │    FCS API      │\n│  (Your Server)  │         │   (Browser)     │         │                 │\n└────────┬────────┘         └────────┬────────┘         └────────┬────────┘\n         │                           │                           │\n         │  1. Generate Token        │                           │\n         │  (using access_key)       │                           │\n         │                           │                           │\n         │  2. Send token data       │                           │\n         │ ─────────────────────────\u003e│                           │\n         │                           │                           │\n         │                           │  3. API Request           │\n         │                           │  (with token)             │\n         │                           │ ─────────────────────────\u003e│\n         │                           │                           │\n         │                           │  4. Response              │\n         │                           │ \u003c─────────────────────────│\n         │                           │                           │\n```\n\n## Get API Keys\n\n1. Visit [FCS API](https://fcsapi.com)\n2. Sign up for a free account\n3. Get your **Access Key** and **Public Key** from the [dashboard](https://fcsapi.com/dashboard)\n\n## Documentation\n\n- [Forex API Documentation](https://fcsapi.com/document/forex-api)\n- [Crypto API Documentation](https://fcsapi.com/document/crypto-api)\n- [Stock API Documentation](https://fcsapi.com/document/stock-api)\n\n## Support\n\n- Email: support@fcsapi.com\n- Website: [fcsapi.com](https://fcsapi.com)\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffcsapi%2Ftoken-generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffcsapi%2Ftoken-generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffcsapi%2Ftoken-generator/lists"}