Firebase token generation
Project description
FireBased
A based implementation of the Firebase API. This project is a partial wrapper around the Firebase API.
With just the teeniest bit of extra work, you can hook this up like someone did in Push-Server to a REST API and have a full-fledged push notification server.
Privacy Notice
Note that App developers CANNOT see the device you used to register with. Therefore, the device you register the FCM token with does not need to match the device you actually use the token with. However, once you associated an FCM token with a given device, at this point, the app developer CAN save that association.
Note From The Creator
If you are using this, you are a developer. You know what you are doing. I am not responsible for any misuse of this software. I am not responsible for any bans or other actions taken against your account.
If you are hiring, e-mail isaacikogan@gmail.com. Let's chat :)!
Helpful Tips
There are only a few identifiers you need to make requests. All of them can be found in the APK of the app you want to register firebase for:
google_api_keye.g. "AIzaSyA1b2C3dE4f5G6H7I8J9K0LmNOpQrStUvWx"google_app_ide.g. "1:123456789012:android:abcdefghijklm1234567"google_app_packagee.g. "com.example.app"google_app_namee.g. "api-project-123456789012"google_android_certe.g. "12345678A1B2C3D4E5F6G7H8I9J0KLMNOPQRSTU"
For your convenience, here is a basic example script that can generate a GCM token:
import asyncio
from FireBased.client.client import FireBasedClient
from FireBased.client.proto import CheckInRequestMessage, CheckInResponseMessage
from FireBased.client.schemas import RegisterInstallRequestBody, RegisterInstallRequestBodyJsonBody, RegisterGcmRequestBody, FirebaseInstallationRequestResponse, RegisterGcmRequestResponse
from FireBased.ext.synthetic_data import create_synthetic_check_in, create_mobile_user_agent
google_api_key = "AIzaSyA1b2C3dE4f5G6H7I8J9K0LmNOpQrStUvWx" # Firebase API key
google_app_id = "1:123456789012:android:abcdefghijklm1234567" # Firebase app ID
google_app_package = "com.example.app" # Package name of the Android app
google_app_name = "api-project-123456789012" # Firebase app name
google_android_cert = "12345678A1B2C3D4E5F6G7H8I9J0KLMNOPQRSTU" # Sha-1 APK signing cert
async def generate_gcm_token() -> str:
# Starts an HTTP client under the hood. Best to use in an async context manager for safety.
async with FireBasedClient() as fb:
# Create a synthetic check-in payload.
# Note that according to ChatGPT, developers can't access the data you send here.
# All they can really check is the Firebase ID, GCM token, and the Android ID.
check_in_payload: CheckInRequestMessage = create_synthetic_check_in()
check_in_response: CheckInResponseMessage = await fb.check_in(body=check_in_payload)
# Create the installation registration payload
register_install_payload: RegisterInstallRequestBody = RegisterInstallRequestBody(
app_public_key=google_api_key,
app_package=google_app_package,
app_name=google_app_name,
json_body=RegisterInstallRequestBodyJsonBody(appId=google_app_id),
user_agent=create_mobile_user_agent(),
app_cert=google_android_cert
)
# Register the installation
install_data: FirebaseInstallationRequestResponse = await fb.register_install(
body=register_install_payload
)
# Finally, register the GCM token using the data from the previous requests
gcm_response: RegisterGcmRequestResponse = await fb.register_gcm(
body=RegisterGcmRequestBody.from_models(
install_request_body=register_install_payload,
install_request_response=install_data,
check_in_request_response=check_in_response
)
)
return gcm_response.token
if __name__ == '__main__':
gcm_token: str = asyncio.run(generate_gcm_token())
print(f"Generated GCM token: {gcm_token}")
Latest pertinent data is found at https://github.com/firebase/firebase-js-sdk
Contributors
- Isaac Kogan - Creator, Primary Maintainer, and Reverse-Engineering - isaackogan
- Lastrise - Reverse-Engineering - lastrise
See also the full list of contributors who have participated in this project.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file firebased-0.0.2.post3.tar.gz.
File metadata
- Download URL: firebased-0.0.2.post3.tar.gz
- Upload date:
- Size: 9.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0fd7bf09d924fb60a5e030abe7ff11bac17263b791766b322f40f8a6bc6d9609
|
|
| MD5 |
04e5bd30a937ee50c3937dc60a2cb22d
|
|
| BLAKE2b-256 |
278a8b83e614063aec5bcb721bd7f3766bba4ab17fdd142e133116931059e8e1
|
File details
Details for the file FireBased-0.0.2.post3-py3-none-any.whl.
File metadata
- Download URL: FireBased-0.0.2.post3-py3-none-any.whl
- Upload date:
- Size: 11.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc8ce76fc6ec9776852cb63de010c12c7442f92046f1651dd0e261029c26efca
|
|
| MD5 |
f717355ce7171f06a30d2fb9bf10d096
|
|
| BLAKE2b-256 |
7fa816f175dbe53283dee444755965ce67135eaeeb3669f5d8918f4406a7241d
|