Obtenez AccessToken pour le compte de service avec le SDK Firebase Admin Python

Postscript

Firebase Admin Python SDK v2.0.0 a été publié le 17 mai 2017, et certaines méthodes d'appel étaient différentes, je l'ai donc ajouté en supplément.

Aperçu

Le SDK Firebase pour Python a été publié par un responsable de Google le 4 avril 2017 (vers 4/5 tôt le matin, heure du Japon). Le nom officiel est "Firebase Admin Python SDK", et comme son nom l'indique, il s'agit d'un SDK qui prend en charge les API autour de Admin.

Release Notes  |  Firebase

Ce que vous pouvez faire avec le SDK Firebase Admin Python

Comme son nom l'indique (deuxième fois), le traitement autour de Admin est fourni. Cependant, quand je lis la référence et le guide, il semble que la fonction actuellement fournie n'est "que la partie qui crée le jeton personnalisé et le jeton d'accès à partir de la clé privée du compte de service".

Comment utiliser

Add the Firebase Admin SDK to your Server  |  Firebase

Je vais tracer le contenu écrit ci-dessus tel quel, mais attention car il sera obstrué s'il est ** tel quel **.

Tout d'abord, récupérez la clé privée. Ouvrez le projet à partir du site de la console Firebase (https://console.firebase.com/), accédez à Gear> Paramètres du projet> Compte de service à côté de Vue d'ensemble dans le menu, puis cliquez sur "Nouvelle clé privée" en bas de l'écran. Appuyez sur le bouton "Générer" pour obtenir le fichier json.

Ensuite, installez les bibliothèques nécessaires avec pip.

$ pip install firebase-admin

Le code ressemble à ceci.

v1.0.0

getToken.py



import firebase_admin
from firebase_admin import credentials

def getToken:

    credential = credentials.Certificate('./serviceAccountKey.json')
    scopes = [
        'https://www.googleapis.com/auth/firebase.database',
        'https://www.googleapis.com/auth/userinfo.email'
    ]

    # access_Obtenez un jeton
    accessTokenInfo = credential.get_credential().create_scoped(scopes).get_access_token()
    print("access_token:" + accessTokenInfo.access_token)
    print("expire:" + str(accessTokenInfo.expires_in))

if __name__ == '__main__':
    getToken()

La différence avec le document officiel est que vous pouvez définir la portée sur critique sans utiliser firebase_admin.initialize_app () et obtenir l'AccessToken tel quel.

v2.0.0

getToken.py


import firebase_admin
from firebase_admin import credentials

def getToken:

    credential = credentials.Certificate('./serviceAccountKey.json')

    # access_Obtenez un jeton
    accessTokenInfo = credential.get_access_token()
    print("access_token:" + accessTokenInfo.access_token)
    print("expire:" + str(accessTokenInfo.expiry)) # 「20XX-XX-XX XX:XX:XX.XXXXXX "est renvoyé

if __name__ == '__main__':
    getToken()

La différence avec la v1.0.0 est que vous n'avez plus besoin d'obtenir les informations d'identification une fois avec get_credential () ou de définir la portée. De plus, alors que le contenu de la date d'expiration était le nombre de secondes restantes dans la v1.0.0, à partir de la v2.0.0, le nom de la propriété est ʻexpiry`, et la date d'expiration disponible est renvoyée sous forme d'objet datetime. Je vais.

Accédez à la base de données en temps réel avec le jeton acquis

Lorsque vous l'utilisez avec RealtimeDatabase, vous pouvez y accéder en le mettant dans le paramètre ʻaccess_token`. Notez que cet AccessToken est créé par un compte de service, vous pouvez donc lire et écrire tout ce qui est défini sur false par tous les utilisateurs dans les règles de base de données **, alors soyez prudent lorsque vous le manipulez. ** À propos, la date d'expiration du jeton est d'une heure à compter de l'émission.

https://{FIREBASE_PROJECT_ID}.firebaseio.com/hoge.json?access_token={FIREBASE_ACCESS_TOKEN}

Je me demande si vous pouvez obtenir CustomToken de la même manière, mais il n'est toujours pas vérifié car ce n'est plus ce dont vous avez besoin lorsque vous obtenez AccessToken correctement.

Recommended Posts

Obtenez AccessToken pour le compte de service avec le SDK Firebase Admin Python
Obtenez un jeton d'accès pour l'API Pocket
[Pour les débutants] Web scraping avec Python "Accédez à l'URL de la page pour obtenir le contenu"
Créez un Twitter BOT avec le SDK GoogleAppEngine pour Python
[Python] Récupère le répertoire d'exécution du script avec un chemin absolu
Obtenez la météo avec les requêtes Python
Obtenez la météo avec les requêtes Python 2
Accordez un jeton d'accès avec la commande curl et POST l'API
Obtenez la valeur de retour d'un script shell externe (ls) avec python3
[Python] Récupère le nom de la variable avec str
Travailler avec OpenStack à l'aide du SDK Python
Enregistrer les utilisateurs avec le SDK d'administration Google (python)
Obtenez un jeton pour conoha avec python
Crawl Follower pour un compte avec Instagram
Comment utiliser OAuth et API de compte de service avec le client API Google pour python
La voie de la mise à jour de Splunkbase avec votre propre application Splunk compatible avec Python v2 / v3
Créez un filtre pour obtenir un jeton d'accès avec l'API Graph (Flask)
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
[Python] Récupérez les fichiers dans le dossier avec Python
Obtenez un billet pour un parc à thème avec python
[Python] matplotlib: Formatez le diagramme de votre mémoire
Construire un environnement Anaconda pour Python avec pyenv
Utilisez Logger avec Python pour le moment
Obtenir des informations sur les notes à l'aide du SDK Evernote pour Python 3
[Python] Prédire le loyer approprié pour les appartements
Appeler Polly à partir du kit SDK AWS pour Python
Pour ceux qui auraient dû installer janome correctement avec Python mais qui obtiennent une erreur
Faire de l'application Python CUI une application pour Mac
Apprenez la file d'attente Service Bus avec Azure SDK pour Go (1)
Exécutez avec CentOS7 + Apache2.4 + Python3.6 pour le moment
Provisionnement de flotte avec AWS IoT SDK for Python v2
[Python] Obtenez les nombres dans l'image graphique avec OCR
Les utilisateurs sans compte accèdent à AWS Management Console
Obtenez des résultats au format dict avec Python psycopg2
Informations pour contrôler les moteurs avec Python sur RaspberryPi
Créer un environnement pour le traitement du langage naturel avec Python
Python: obtenir une liste de méthodes pour un objet
Obtenez l'état de fonctionnement de JR West avec Python
Obtenir des données de la base de données via ODBC avec Python (Access)
Programmez avec votre smartphone n'importe où! (Recommandé pour le langage C / Python)
Accédez à Google Cloud Storage à partir de Python (boto) à l'aide du compte de service et du fichier de clé (p12)
Comment obtenir les informations des organisations, Cost Explorer d'un autre compte AWS avec Lambda (python)