Skip to main content

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.

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_key e.g. "AIzaSyA1b2C3dE4f5G6H7I8J9K0LmNOpQrStUvWx"
  • google_app_id e.g. "1:123456789012:android:abcdefghijklm1234567"
  • google_app_package e.g. "com.example.app"
  • google_app_name e.g. "api-project-123456789012"
  • google_android_cert e.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

client = FireBasedClient()

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:
    # 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 client.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 client.register_install(
        body=register_install_payload
    )

    # Finally, register the GCM token using the data from the previous requests
    gcm_response: RegisterGcmRequestResponse = await client.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}")

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

firebased-0.0.1.tar.gz (9.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

FireBased-0.0.1-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file firebased-0.0.1.tar.gz.

File metadata

  • Download URL: firebased-0.0.1.tar.gz
  • Upload date:
  • Size: 9.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for firebased-0.0.1.tar.gz
Algorithm Hash digest
SHA256 1bbf9a0398dd4a0dc0a48fd250fbb96341c6a7f06e43578c533b642a21271fa7
MD5 9456aee9faeee8f0f9fe3d1c843cd6d9
BLAKE2b-256 ef938f3c65578e28b732f847ff6f08888895d02453afea53c7ecc54e5e47247c

See more details on using hashes here.

File details

Details for the file FireBased-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: FireBased-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 10.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for FireBased-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7b37f62e843584df663435cc794417d0de71d32bcf7dced29900948f3465767f
MD5 36a818f6e4c2cc808f1c4ecd9ce6d112
BLAKE2b-256 9c30c795142f6e2ec739b81e30e87fac097c1f79a3941e2bf8d0f946d99e326f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page